From f6ebcd34a340b50a5c52941c61e3942bcaf2bf08 Mon Sep 17 00:00:00 2001 From: thespad Date: Fri, 17 Jan 2025 17:21:10 +0000 Subject: [PATCH 1/4] Make consistent with updated blog post --- docs/general/container-customization.md | 84 +++++++++++++------------ 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/docs/general/container-customization.md b/docs/general/container-customization.md index e311099d5c..0b2bcf387f 100644 --- a/docs/general/container-customization.md +++ b/docs/general/container-customization.md @@ -12,14 +12,16 @@ Behind the scenes we have been working to provide the community with the ability All of the functionality described in this post is live on every one of the containers we currently maintain: - +[https://fleet.linuxserver.io](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. + While the following support has been added to our containers, we will not provide formal 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. See our [Support Policy](https://linuxserver.io/supportpolicy) for more details. ## 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. +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. All custom scripts must be marked as executable, or they will be ignored, and should be owned by `root` and not the user running the container. + +Custom Scripts run *after* built-in and any applied mod init steps but *before* any services start. 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 @@ -33,7 +35,7 @@ services: 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. +One example use case is our Piwigo container, which has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add the following into a script file (can be named anything) and you're good to go. ```shell #!/bin/bash @@ -42,12 +44,14 @@ 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 + +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. + +Custom Services run *after* built-in and any applied mod services and are effectively the last thing to run during container startup. + +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 ```yaml services: @@ -59,25 +63,22 @@ services: 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: +Running something like memcached in our containers is now as simple as a single file. Drop this script in `/custom-services.d/memcached` and it will run automatically in the container: -```shell +```bash #!/usr/bin/with-contenv bash -/usr/sbin/crond -f -S -l 0 -c /etc/crontabs +exec memcached -u abc ``` !!! 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. + In most cases you will need to have the application in question installed via a custom script using the technique in the previous section to be able to then run it as a service. ## 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. +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)](https://github.com/linuxserver/docker-mods) @@ -85,40 +86,43 @@ Essentially it is a system that stashes a tarball of scripts and any other files 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: +An example of how this logic can be used to greatly expand the functionality of our base containers would be to add [cloudflared](https://github.com/cloudflare/cloudflared) support to a container: -```shell -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 +```yaml + nginx: + image: lscr.io/linuxserver/nginx + container_name: nginx + environment: + PUID: 1000 + PGID: 1000 + TZ: Europe/London + DOCKER_MODS: lscr.io/linuxserver/mods:universal-cloudflared + CF_ZONE_ID: zone_id + CF_ACCOUNT_ID: acct_id + CF_API_TOKEN: token + CF_TUNNEL_NAME: example + CF_TUNNEL_PASSWORD: pleasedontusethisexamplepassword + CF_TUNNEL_CONFIG: | + ingress: + - hostname: test.example.com + service: http://localhost:80 + - service: http_status:404 + volumes: + - /path/to/appdata/config:/config + restart: unless-stopped ``` -The source code for this mod can be found [here](https://github.com/Taisun-Docker/config-mods/tree/master/pia). +The source code for this mod can be found [here](https://github.com/linuxserver/docker-mods/tree/universal-cloudflared). !!! 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. + When pulling in logic from 3rd party sources, practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside 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](https://github.com/linuxserver/docker-mods) we are always available to help you out. -Our [Discord server](https://discord.gg/YWrKVTn) is best for quick direct contact and our [Forum](https://discourse.linuxserver.io/) for a longer running project. +Our [Discord server](https://linuxserver.io/discord) is best for quick direct contact, and our [Forum](https://discourse.linuxserver.io) for a longer running project. -There is zero barrier to entry for these levels of container customization and you are in complete control. +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. From 1d68ecdd30f709901b646bd524b3b619a5d1ea39 Mon Sep 17 00:00:00 2001 From: thespad Date: Fri, 17 Jan 2025 17:21:19 +0000 Subject: [PATCH 2/4] Update links --- docs/general/how-to-get-support.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/general/how-to-get-support.md b/docs/general/how-to-get-support.md index a7c8f499cf..6b84afb630 100644 --- a/docs/general/how-to-get-support.md +++ b/docs/general/how-to-get-support.md @@ -1,18 +1,22 @@ # How to get support -1. Join our [discord server](https://discord.gg/YWrKVTn), read our [support policy](../misc/support-policy.md), and read the description of each channel before asking for support. +1. Join our [Discord server](https://linuxserver.io/discord), read our [Support Policy](../misc/support-policy.md), and read the description of each channel before asking for support. 2. SSH to your server and run the following command to create an alias that gathers the information we require: + ```bash alias lsiosupport='function _lsiosupport(){ uname -a > lsiosupport.txt; docker -v >> lsiosupport.txt; cat /etc/os-release >> lsiosupport.txt; docker inspect --format "$(wget -qO- https://docs.linuxserver.io/assets/run.tpl)" $1 >> lsiosupport.txt; docker logs $1 >> lsiosupport.txt; }; _lsiosupport' ``` + The alias gathers the following information: OS details, docker version, run command, and container logs. 3. Execute the alias with a container name: + ```bash lsiosupport ``` + Add `sudo` in the beginning if your user can't access docker. 4. A file called `lsiosupport.txt` will be created in the current folder, open it with a text editor. 5. Redact sensitive information such as: passwords, domains, emails, personal information, etc. **Don't redact information we need for troubleshooting such as: IPs, volumes, local paths, etc.** 6. Upload the file to a pastebin like [PrivateBin](https://privatebin.net/) or [Gist](https://gist.github.com/). -7. Post the link along with a detailed description of your issue in the appropriate discord support channel. \ No newline at end of file +7. Post the link along with a detailed description of your issue in the appropriate discord support channel. From 8e3f15d87c59d034fe47359ae2ade0b3b02418cd Mon Sep 17 00:00:00 2001 From: thespad Date: Fri, 17 Jan 2025 17:21:28 +0000 Subject: [PATCH 3/4] Add container branding page from blog --- docs/assets/images/lsio-branding1.png | Bin 0 -> 28231 bytes docs/assets/images/lsio-branding2.png | Bin 0 -> 21949 bytes docs/assets/images/lsio-branding3.png | Bin 0 -> 26245 bytes docs/general/.pages | 13 +++++++------ docs/general/container-branding.md | 19 +++++++++++++++++++ 5 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 docs/assets/images/lsio-branding1.png create mode 100644 docs/assets/images/lsio-branding2.png create mode 100644 docs/assets/images/lsio-branding3.png create mode 100644 docs/general/container-branding.md diff --git a/docs/assets/images/lsio-branding1.png b/docs/assets/images/lsio-branding1.png new file mode 100644 index 0000000000000000000000000000000000000000..2402f8b638b19defaeaefb437899192bfb0ca1c2 GIT binary patch literal 28231 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≧9#aIzt9eTe7YSaB1wl zD|DX>)P6gVSZWf(72;Mi21L4olwg#~9O8}WXu;sMbgxFG?;OW7rFLTYcQ4oI>A$4Z z>q+%*<1go?>MFuw1MFDGN7UsvAN~GONN@}A*xL1}H4A^-W#2BBKF!flo3ZS)&{(xM zTd`J;0hH3uzl>U!uv6lX+H(c^vYWX*JyzD zknOV6F2by(ApKluv(L{rvfZA-3UHPCZ1{39YYERO_HzAUl|t6-J&TpY(Z75ZqlNeH zyqfhO4{PJEsNSL6ea|v9&G|c??9HNw-pvUpF6_mP;|->MsxQ)Bkp@V4lk8}rsQdYf znX-iZAFm)>QEnt}n%ou0E=_V%U`G_8xBhfi9Gj^OLBsTI@ZQ#%l1`WWh@2lYNI|ns zBfsi~)i5+Hl9Qm-GJeMFQ?(v9R?&)NXvE6Oi0lcYuQ$IoKDx=D`%0lgjy-ne(=mSS z4I6*CCzr`>n+13s*y^Djb^N;8-B$G>1ty{5?kel*esUN9#=c#!KW$6(`;OSggA%Al zF8C;CSuL$JSqndLdS>>u0wd3^@O)PwMYp)9V@a+cHd1+-`YcM%Ofpamk@>FAKOmrg pzHa++mw6J<;02f`>}e7L{DVYK-P5@Q5Q7vmJ#Bfa)ac5ce*x~CBs2g3 literal 0 HcmV?d00001 diff --git a/docs/assets/images/lsio-branding3.png b/docs/assets/images/lsio-branding3.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8f947f20a950d8af5acd996cb308e1e7fbb315 GIT binary patch literal 26245 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 T2mVV80l~ey50pw2%>4fYc2USc literal 0 HcmV?d00001 diff --git a/docs/general/.pages b/docs/general/.pages index 8d432e8f1a..0fa23a6e38 100644 --- a/docs/general/.pages +++ b/docs/general/.pages @@ -1,13 +1,14 @@ nav: - - container-execution.md - containers-101.md - - running-our-containers.md + - container-branding.md - container-customization.md + - container-execution.md - docker-compose.md + - fleet.md + - how-to-get-support.md + - running-our-containers.md + - split-dns.md + - swag.md - understanding-puid-and-pgid.md - updating-our-containers.md - volumes.md - - fleet.md - - swag.md - - how-to-get-support.md - - split-dns.md diff --git a/docs/general/container-branding.md b/docs/general/container-branding.md new file mode 100644 index 0000000000..5d6a2bda87 --- /dev/null +++ b/docs/general/container-branding.md @@ -0,0 +1,19 @@ +# Container Branding + +If you use our base images for your own projects, or fork our downstream images to modify them, you're probably aware that we ask you to change the branding that appears in the container init logs to make it clear that your image is not associated with us. This is for your benefit as much as ours: we aren't well-equipped to provide your users with support, and you don't want them crediting us for your work. + +Iif you build from one of our base images and don't change anything, your init logs will look something like this: + +![Default Container Branding](../assets/images/lsio-branding1.png) + +If you want to add your own branding, when using our base images or a forked downstream one, just place a file called `branding` containing the text you want to use into the `/etc/s6-overlay/s6-rc.d/init-adduser` folder of your image. The branding file will replace the highlighted section of the init: + +![Default Container Branding with Hightlights](../assets/images/lsio-branding2.png) + +On start-up, the base image will automatically load the branding into its init, allowing you to inflict whatever ASCII art you like on your users: + +![Custom Container Branding](../assets/images/lsio-branding2.png) + +Hopefully this makes it simpler for everyone to manage the branding of your images when using our bases. + +A final note: if you've previously overridden the `init-adduser` run file to do custom branding, we recommend switching to the above approach so that you don't miss out on any future changes to that init step. From 7a5fdce657d545bc6fda1e202b6a3e889bef4287 Mon Sep 17 00:00:00 2001 From: thespad Date: Fri, 17 Jan 2025 17:34:42 +0000 Subject: [PATCH 4/4] Fix image url --- docs/general/container-branding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/general/container-branding.md b/docs/general/container-branding.md index 5d6a2bda87..73b8506169 100644 --- a/docs/general/container-branding.md +++ b/docs/general/container-branding.md @@ -12,7 +12,7 @@ If you want to add your own branding, when using our base images or a forked dow On start-up, the base image will automatically load the branding into its init, allowing you to inflict whatever ASCII art you like on your users: -![Custom Container Branding](../assets/images/lsio-branding2.png) +![Custom Container Branding](../assets/images/lsio-branding3.png) Hopefully this makes it simpler for everyone to manage the branding of your images when using our bases.