<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Docker/Portainer on 4n6Post</title><link>https://4n6post.com/dockers/</link><description>Recent content in Docker/Portainer on 4n6Post</description><atom:link href="https://4n6post.com/dockers/index.xml" rel="self" type="application/rss+xml"/><item><title>Whisper Webapp - Docker Deployment</title><link>https://4n6post.com/dockers/whisper-webapp/</link><pubDate>2025-12-20</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/jonesckevin/whisper-webapp"&gt;https://github.com/jonesckevin/whisper-webapp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/whisper_example.png" alt="Whisper WebApp Example"&gt;&lt;/p&gt;
&lt;p&gt;Whisper WebApp Dockerized version for running OpenAI&amp;rsquo;s Whisper speech-to-text model. It provides an easy-to-use web interface for transcribing audio/video files with support for multiple languages and models.&lt;/p&gt;
&lt;p&gt;Deploying Whisper WebApp in a Docker container simplifies setup and ensures consistent environments for reliable transcription.&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;33 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;---
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; whisper-webapp:
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; image: &amp;#39;jonesckevin/whisper-webapp:latest&amp;#39;
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - &amp;#34;${WHISPERPORT:-8000}:5000&amp;#34;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; # Mapped directories for external file access via network share
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - ./data/uploads:/data/uploads
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - ./data/completed:/data/completed
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; # Whisper models cache - persists models outside container
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - ./data/models:/root/.cache/whisper
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - NVIDIA_VISIBLE_DEVICES=all
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - CUDA_VISIBLE_DEVICES=0
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - FLASK_ENV=production
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; - MAX_UPLOAD_SIZE_GB=5
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; - PRELOAD_WHISPER_MODELS=false # Set to &amp;#39;true&amp;#39; to download all models on first run
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; deploy:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; resources:
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; reservations:
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; devices:
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; - driver: nvidia
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; count: 1
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; capabilities: [gpu]
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; test: [&amp;#34;CMD&amp;#34;, &amp;#34;curl&amp;#34;, &amp;#34;-f&amp;#34;, &amp;#34;http://localhost:5000/api/health&amp;#34;]
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; interval: 30s
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; timeout: 10s
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; retries: 3
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; start_period: 60s&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;If you use Portainer, and do not have a GPU, you can utilize CPU with degraded performance.&lt;/p&gt;</description></item><item><title>BentoPDF</title><link>https://4n6post.com/dockers/bentopdf/</link><pubDate>2025-12-19</pubDate><description>&lt;p&gt;This guide provides a Docker Compose setup for BentoPDF, a lightweight PDF viewer and manager that can be self-hosted. BentoPDF offers an easy way to view, organize, and manage PDF documents through a web interface.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bentopdf.com/"&gt;Official Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/alam00000/bentopdf"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="../images/bentopdf_example.png" alt="BentoPDF Screenshot"&gt;&lt;/p&gt;
&lt;h2 id="portainer-setup"&gt;Portainer Setup&lt;/h2&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;9 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; bentopdf:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; # simple mode - bentopdf/bentopdf-simple:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; # default mode - bentopdf/bentopdf:latest
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; image: bentopdf/bentopdf:latest
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; container_name: bentopdf
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - &amp;#39;8080:8080&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>OCR WebApp</title><link>https://4n6post.com/dockers/ocr-webapp/</link><pubDate>2024-12-21</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jonesckevin/ocr-webapp"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/jonesckevin/ocr-webapp"&gt;Docker Hub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OCR WebApp is a Dockerized application that provides a web interface for performing Optical Character Recognition (OCR) on uploaded images and documents. It leverages powerful OCR engines to extract text from various file formats, making it easy for users to convert scanned documents and images into editable text.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/ocr_example.png" alt="ocr-webapp"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;51 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;---
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; ocr-webapp:
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: jonesckevin/ocr-webapp:latest
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; container_name: ocr-webapp
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - &amp;#34;${OCRPORT:-8002}:5000&amp;#34;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; # Persistent storage for uploaded files and OCR results
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - ./data/uploaded:/data/uploaded
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - ./data/output:/data/output
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - ./data/logs:/data/logs
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; # Flask settings
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - FLASK_ENV=production
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - SECRET_KEY=change-this-to-a-secure-random-string
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; # Admin feature toggles
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; - ALLOW_LIVE_LANG_INSTALL=true
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; - ALLOW_CLIENT_API_KEYS=true
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; # Logging configuration
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; - LOG_MAX_BYTES=10485760 # 10MB default
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; - LOG_BACKUP_COUNT=5
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - LOG_LEVEL=INFO
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; # LLM Server endpoints (local)
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; - OLLAMA_HOST=http://host.docker.internal:11434
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; - LMSTUDIO_HOST=http://host.docker.internal:1234
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; # Paid LLM API Keys (server-side, secure)
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; # Uncomment and set your API keys as needed
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; # - OPENAI_API_KEY=sk-your-openai-key
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; # - ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; # - GOOGLE_API_KEY=AIza-your-google-key
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; # - DEEPSEEK_API_KEY=sk-your-deepseek-key
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; # - COHERE_API_KEY=your-cohere-key
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; # - GROK_API_KEY=xai-your-grok-key
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; # - MISTRAL_API_KEY=your-mistral-key
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; # - PERPLEXITY_API_KEY=pplx-your-perplexity-key
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="43"&gt;&lt;/span&gt; # For live language installation, container needs to run as root
&lt;span class="line-number" data-line="44"&gt;&lt;/span&gt; # user: root
&lt;span class="line-number" data-line="45"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="46"&gt;&lt;/span&gt; # Resource limits (optional)
&lt;span class="line-number" data-line="47"&gt;&lt;/span&gt; # deploy:
&lt;span class="line-number" data-line="48"&gt;&lt;/span&gt; # resources:
&lt;span class="line-number" data-line="49"&gt;&lt;/span&gt; # limits:
&lt;span class="line-number" data-line="50"&gt;&lt;/span&gt; # memory: 2G
&lt;span class="line-number" data-line="51"&gt;&lt;/span&gt; # cpus: &amp;#39;2&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Wireguard + Dashboard</title><link>https://4n6post.com/dockers/wireguard-dashboard/</link><pubDate>2024-12-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/WGDashboard/WGDashboard/"&gt;GitHub Repository - WGDashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/donaldzou/wgdashboard"&gt;Docker Hub - DonaldZou&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wireguard + WGDashboard is a Dockerized setup that combines the Wireguard VPN server with WGDashboard, a web-based management interface. This setup allows users to easily configure and monitor their Wireguard VPN servers through an intuitive dashboard.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/wgdashboard_example.png" alt="wgdashboard"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;42 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; wgdashboard:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; # Since the github organisation we recommend the ghcr.io.
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; # Alternatively we also still push to docker.io under donaldzou/wgdashboard.
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; # Both share the exact same tags. So they should be interchangable.
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; image: ghcr.io/wgdashboard/wgdashboard:latest
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; # Make sure to set the restart policy. Because for a VPN its important to come back IF it crashes.
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; container_name: wgdashboard
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; # Environment variables can be used to configure certain values at startup. Without having to configure it from the dashboard.
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; # By default its all disabled, but uncomment the following lines to apply these. (uncommenting is removing the # character)
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; # Refer to the documentation on https://wgdashboard.dev/ for more info on what everything means.
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; #environment:
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; #- tz= # &amp;lt;--- Set container timezone, default: Europe/Amsterdam.
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; #- public_ip= # &amp;lt;--- Set public IP to ensure the correct one is chosen, defaulting to the IP give by ifconfig.me.
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; #- wgd_port= # &amp;lt;--- Set the port WGDashboard will use for its web-server.
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; # The following section, ports is very important for exposing more than one Wireguard/AmneziaWireguard interfaces.
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; # Once you create a new configuration and assign a port in the dashboard, don&amp;#39;t forget to add it to the ports as well.
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; # Quick-tip: most Wireguard VPN tunnels use UDP. WGDashboard uses HTTP, so tcp.
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; - 10086:10086/tcp
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - 51820:51820/udp
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; # Volumes can be configured however you&amp;#39;d like. The default is using docker volumes.
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; # If you want to use local paths, replace the path before the : with your path.
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; - aconf:/etc/amnezia/amneziawg
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; - conf:/etc/wireguard
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; - data:/data
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; # Needed for network administration.
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; cap_add:
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; - NET_ADMIN
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt;# The following configuration is linked to the above default volumes.
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; aconf:
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt; conf:
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt; data:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>*Arr Media Stack</title><link>https://4n6post.com/dockers/arr_media/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;This guide provides a Docker Compose setup for various media management applications, including qBittorrent, Transmission, NZBGet, SABnzbd, Jackett, Prowlarr, Sonarr, Radarr, Lidarr, Readarr, Bazarr, and Tubesync. The setup is designed to work with a Synology NAS or similar systems.&lt;/p&gt;
&lt;h2 id="portainer-setup"&gt;Portainer Setup&lt;/h2&gt;
&lt;p&gt;Note: You will need your own VPN credentials for the DelugeVPN service. As well you will need your config file from the VPN provider.&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;203 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; delugevpn:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: binhex/arch-delugevpn
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: delugevpn
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; cap_add:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - NET_ADMIN
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - VPN_ENABLED=yes
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - VPN_USER=${VPN_USER}
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - VPN_PASS=${VPN_PASS}
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - VPN_PROV=pia
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - LAN_NETWORK=192.168.1.0/24
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - NAME_SERVERS=1.1.1.1,1.0.0.1
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - DELUGE_DAEMON_LOG_LEVEL=info
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - DELUGE_WEB_LOG_LEVEL=info
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - 8112:8112
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; - 8118:8118
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; - 58846:58846
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; - $V_PATHS/delugevpn:/data
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; - $V_PATHS/delugevpn/config:/config
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; transmission:
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; image: linuxserver/transmission:version-3.00-r0
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; container_name: transmission
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; - $V_PATHS/transmission:/config
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/media/_downloads
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; - $V_PATHS/_downloads/_watch:/media/_downloads/_watch
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; - $V_PATHS/_downloads/_intermediate:/media/_downloads/_intermediate
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; nzbget:
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/nzbget
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; container_name: nzbget
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt; - 6789:6789
&lt;span class="line-number" data-line="43"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="44"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="45"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="46"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="47"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="48"&gt;&lt;/span&gt; - $V_PATHS/nzbget:/config
&lt;span class="line-number" data-line="49"&gt;&lt;/span&gt; - $V_PATHS/nzbget/logs:/nzb_logs
&lt;span class="line-number" data-line="50"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/media/_downloads
&lt;span class="line-number" data-line="51"&gt;&lt;/span&gt; - $V_PATHS/_downloads/_watch:/media/_downloads/_watch
&lt;span class="line-number" data-line="52"&gt;&lt;/span&gt; - $V_PATHS/_downloads/_intermediate:/media/_downloads/_intermediate
&lt;span class="line-number" data-line="53"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="54"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="55"&gt;&lt;/span&gt; sabnzb:
&lt;span class="line-number" data-line="56"&gt;&lt;/span&gt; image: lscr.io/linuxserver/sabnzbd:latest
&lt;span class="line-number" data-line="57"&gt;&lt;/span&gt; container_name: sabnzb
&lt;span class="line-number" data-line="58"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="59"&gt;&lt;/span&gt; - 8280:8080
&lt;span class="line-number" data-line="60"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="61"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="62"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="63"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="64"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="65"&gt;&lt;/span&gt; - $V_PATH/sabnzb:/config
&lt;span class="line-number" data-line="66"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/downloads
&lt;span class="line-number" data-line="67"&gt;&lt;/span&gt; - $V_PATHS/_downloads/_incomplete:/incomplete-downloads
&lt;span class="line-number" data-line="68"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="69"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="70"&gt;&lt;/span&gt; jackett:
&lt;span class="line-number" data-line="71"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/jackett
&lt;span class="line-number" data-line="72"&gt;&lt;/span&gt; container_name: jackett
&lt;span class="line-number" data-line="73"&gt;&lt;/span&gt; hostname: jackett
&lt;span class="line-number" data-line="74"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="75"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="76"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="77"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="78"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="79"&gt;&lt;/span&gt; - 9117:9117
&lt;span class="line-number" data-line="80"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="81"&gt;&lt;/span&gt; - $V_PATHS/jackett:/config
&lt;span class="line-number" data-line="82"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="83"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="84"&gt;&lt;/span&gt; prowlarr:
&lt;span class="line-number" data-line="85"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/prowlarr:develop
&lt;span class="line-number" data-line="86"&gt;&lt;/span&gt; container_name: prowlarr
&lt;span class="line-number" data-line="87"&gt;&lt;/span&gt; hostname: prowlarr
&lt;span class="line-number" data-line="88"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="89"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="90"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="91"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="92"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="93"&gt;&lt;/span&gt; - 9696:9696
&lt;span class="line-number" data-line="94"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="95"&gt;&lt;/span&gt; - $V_PATHS/prowlarr:/config
&lt;span class="line-number" data-line="96"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="97"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="98"&gt;&lt;/span&gt; sonarr:
&lt;span class="line-number" data-line="99"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/sonarr
&lt;span class="line-number" data-line="100"&gt;&lt;/span&gt; container_name: sonarr
&lt;span class="line-number" data-line="101"&gt;&lt;/span&gt; hostname: sonarr
&lt;span class="line-number" data-line="102"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="103"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="104"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="105"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="106"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="107"&gt;&lt;/span&gt; - 8989:8989
&lt;span class="line-number" data-line="108"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="109"&gt;&lt;/span&gt; - $V_PATHS/sonarr:/config
&lt;span class="line-number" data-line="110"&gt;&lt;/span&gt; - $V_MEDIA/tv:/media/tv
&lt;span class="line-number" data-line="111"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/media/_downloads
&lt;span class="line-number" data-line="112"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="113"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="114"&gt;&lt;/span&gt; radarr:
&lt;span class="line-number" data-line="115"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/radarr
&lt;span class="line-number" data-line="116"&gt;&lt;/span&gt; container_name: radarr
&lt;span class="line-number" data-line="117"&gt;&lt;/span&gt; hostname: radarr
&lt;span class="line-number" data-line="118"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="119"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="120"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="121"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="122"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="123"&gt;&lt;/span&gt; - 7878:7878
&lt;span class="line-number" data-line="124"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="125"&gt;&lt;/span&gt; - $V_PATHS/radarr:/config
&lt;span class="line-number" data-line="126"&gt;&lt;/span&gt; - $V_MEDIA/movies:/media/movies
&lt;span class="line-number" data-line="127"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/media/_downloads
&lt;span class="line-number" data-line="128"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="129"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="130"&gt;&lt;/span&gt; lidarr:
&lt;span class="line-number" data-line="131"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/lidarr
&lt;span class="line-number" data-line="132"&gt;&lt;/span&gt; container_name: lidarr
&lt;span class="line-number" data-line="133"&gt;&lt;/span&gt; hostname: lidarr
&lt;span class="line-number" data-line="134"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="135"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="136"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="137"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="138"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="139"&gt;&lt;/span&gt; - 8686:8686
&lt;span class="line-number" data-line="140"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="141"&gt;&lt;/span&gt; - $V_PATH/lidarr:/config
&lt;span class="line-number" data-line="142"&gt;&lt;/span&gt; - $V_MEDIA/music:/media/music
&lt;span class="line-number" data-line="143"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/media/_downloads
&lt;span class="line-number" data-line="144"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="145"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="146"&gt;&lt;/span&gt; readarr:
&lt;span class="line-number" data-line="147"&gt;&lt;/span&gt; image: lscr.io/linuxserver/readarr:develop
&lt;span class="line-number" data-line="148"&gt;&lt;/span&gt; container_name: readarr
&lt;span class="line-number" data-line="149"&gt;&lt;/span&gt; hostname: readarr
&lt;span class="line-number" data-line="150"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="151"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="152"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="153"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="154"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="155"&gt;&lt;/span&gt; - 8787:8787
&lt;span class="line-number" data-line="156"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="157"&gt;&lt;/span&gt; - $V_PATHS/readarr:/config
&lt;span class="line-number" data-line="158"&gt;&lt;/span&gt; - $V_MEDIA/audiobooks:/media/audiobooks
&lt;span class="line-number" data-line="159"&gt;&lt;/span&gt; - $V_MEDIA/ebooks:/media/ebooks
&lt;span class="line-number" data-line="160"&gt;&lt;/span&gt; - $V_PATHS/_downloads:/media/_downloads
&lt;span class="line-number" data-line="161"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="162"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="163"&gt;&lt;/span&gt; bazarr:
&lt;span class="line-number" data-line="164"&gt;&lt;/span&gt; image: ghcr.io/linuxserver/bazarr
&lt;span class="line-number" data-line="165"&gt;&lt;/span&gt; container_name: bazarr
&lt;span class="line-number" data-line="166"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="167"&gt;&lt;/span&gt; - 6767:6767
&lt;span class="line-number" data-line="168"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="169"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="170"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="171"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="172"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="173"&gt;&lt;/span&gt; - $V_PATHS/bazarr:/config
&lt;span class="line-number" data-line="174"&gt;&lt;/span&gt; - $V_MEDIA/movies:/movies
&lt;span class="line-number" data-line="175"&gt;&lt;/span&gt; - $V_MEDIA/tv:/tv
&lt;span class="line-number" data-line="176"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="177"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="178"&gt;&lt;/span&gt; tubesync:
&lt;span class="line-number" data-line="179"&gt;&lt;/span&gt; image: ghcr.io/meeb/tubesync:latest
&lt;span class="line-number" data-line="180"&gt;&lt;/span&gt; container_name: tubesync
&lt;span class="line-number" data-line="181"&gt;&lt;/span&gt; hostname: tubesync
&lt;span class="line-number" data-line="182"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="183"&gt;&lt;/span&gt; - PUID=$V_PUID
&lt;span class="line-number" data-line="184"&gt;&lt;/span&gt; - PGID=$V_PGID
&lt;span class="line-number" data-line="185"&gt;&lt;/span&gt; - PGID=$V_TZ
&lt;span class="line-number" data-line="186"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="187"&gt;&lt;/span&gt; - 4848:4848
&lt;span class="line-number" data-line="188"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="189"&gt;&lt;/span&gt; - $V_PATHS/tubesync:/config
&lt;span class="line-number" data-line="190"&gt;&lt;/span&gt; - $V_MEDIA/youtube:/downloads
&lt;span class="line-number" data-line="191"&gt;&lt;/span&gt; restart: &amp;#34;no&amp;#34;
&lt;span class="line-number" data-line="192"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="193"&gt;&lt;/span&gt;# Note: The m4b-tool and example sections were not valid docker-compose services and have been removed.
&lt;span class="line-number" data-line="194"&gt;&lt;/span&gt;# If you want to use m4b-tool, use the provided docker run alias outside of docker-compose.
&lt;span class="line-number" data-line="195"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="196"&gt;&lt;/span&gt;# Only one volume was defined, for synology-tv. If you want to use more named volumes, define them here.
&lt;span class="line-number" data-line="197"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="198"&gt;&lt;/span&gt; synology-tv:
&lt;span class="line-number" data-line="199"&gt;&lt;/span&gt; driver: local
&lt;span class="line-number" data-line="200"&gt;&lt;/span&gt; driver_opts:
&lt;span class="line-number" data-line="201"&gt;&lt;/span&gt; type: cifs
&lt;span class="line-number" data-line="202"&gt;&lt;/span&gt; o: username=$V_USERNAME,password=$V_PASSWORD,uid=1031,gid=100,file_mode=0777,dir_mode=0777
&lt;span class="line-number" data-line="203"&gt;&lt;/span&gt; device: $V_CIFS_DEVICE_TV&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;env&lt;/span&gt;
&lt;span class="code-line-count"&gt;10 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-env"&gt;&lt;code class="language-env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt; VPN_USER=your_vpn_username
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; VPN_PASS=your_vpn_password
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; V_PUID=1000
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; V_PGID=1000
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; V_TZ=America/New_York
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; V_MEDIA=/mnt/pve/PlexMedia/nzbdocker
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; V_PATHS=./nzbget/Arrs/
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; V_USERNAME=yarrsername
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; V_PASSWORD=the_password
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; V_CIFS_DEVICE_TV=//10.0.0.10/tv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Backdoors &amp; Breaches</title><link>https://4n6post.com/dockers/backdoors/</link><pubDate>2024-01-15</pubDate><description>&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/p3hndrx/B-B-Shuffle"&gt;https://github.com/p3hndrx/B-B-Shuffle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/b-bshuffle_example.png" alt="Backdoor &amp;amp; Breaches Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;9 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;# Backdoors and Breaches
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;# https://github.com/p3hndrx/B-B-Shuffle
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; shuffle:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; image: jonesckevin/b-b-shuffle:latest
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; container_name: B-B-Shuffle
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - &amp;#34;9500:80&amp;#34;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>BookStack</title><link>https://4n6post.com/dockers/bookstack/</link><pubDate>2024-01-15</pubDate><description>&lt;h2 id="bookstack-docker-compose"&gt;BookStack Docker Compose&lt;/h2&gt;
&lt;p&gt;BookStack is an open-source platform for creating documentation and wikis. It allows users to create, manage, and share content in a structured way. Categorizing in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shelves&lt;/li&gt;
&lt;li&gt;Books&lt;/li&gt;
&lt;li&gt;Chapters&lt;/li&gt;
&lt;li&gt;Pages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BookStack is designed to be user-friendly and provides a simple interface for organizing information.&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/bookstack_example.png" alt="BookStack Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;36 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; bookstack:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: lscr.io/linuxserver/mariadb
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; - &amp;#39;./bookstack/db-data:/var/lib/postgresql/data&amp;#39;
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - MYSQL_DATABASE=bookstackapp
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - MYSQL_USER=bookstack
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - MYSQL_PASSWORD=bookstackpassword
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - TZ=America/Toronto
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - MYSQL_ROOT_PASSWORD=bookstackrootpassword
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - PGID=1000
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - PUID=1000
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; hostname: bookstack-db
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; container_name: BookStack-DB
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; linuxserver:
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; image: &amp;#39;lscr.io/linuxserver/bookstack:latest&amp;#39;
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; - DB_DATABASE=bookstackapp
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; - DB_PASS=bookstackpassword
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; - DB_USER=bookstack
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; - &amp;#39;APP_URL=http://bookstacks.4n6post.com&amp;#39;
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - DB_HOST=BookStack-DB
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; - DB_PORT=3306
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; - PGID=1000
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; - PUID=1000
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; - &amp;#39;./bookstack/public:/var/www/bookstack/public:rw&amp;#39;
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; - &amp;#39;./bookstack/app_data:/config&amp;#39;
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; - &amp;#39;1003:80&amp;#39;
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; hostname: bookstack
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; container_name: BookStack&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>CodiMD (HackMD)</title><link>https://4n6post.com/dockers/codimd/</link><pubDate>2024-01-15</pubDate><description>&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;Cody is a collaborative markdown editor that can be run using Docker. It is based on the HackMD project and allows multiple users to edit documents in real-time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/cody_example.png" alt="Cody Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;25 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; codimd:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: &amp;#39;hackmdio/hackmd:2.5.4&amp;#39;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; hostname: codimd
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; container_name: Codimd
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - CMD_DB_URL=postgres://codimd:thepassword@Codimd-DB/codimd
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - CMD_USECDN=false
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - &amp;#39;./codimd/uploads:/home/hackmd/app/public/uploads&amp;#39;
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - &amp;#39;3000:3000&amp;#39;
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; codimd-db:
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; image: &amp;#39;postgres:14-alpine&amp;#39;
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; hostname: codimd-db
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; container_name: Codimd-DB
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; - POSTGRES_DB=codimd
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; - POSTGRES_USER=codimd
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; - POSTGRES_PASSWORD=thepassword
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - &amp;#39;./codimd/db-data:/var/lib/postgresql/data&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>CyberChef</title><link>https://4n6post.com/dockers/cyberchef/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Cyberchef is a web app for analyzing and decoding data. It provides a wide range of tools for encoding, decoding, encrypting, decrypting, and manipulating data in various formats.&lt;/p&gt;
&lt;p&gt;It is designed to be user-friendly and accessible, making it easy for users to perform complex data operations without needing extensive technical knowledge.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/cyberchef_example.png" alt="CyberChef Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;6 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; cyber-chef:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: mpepping/cyberchef:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: CyberChef
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - &amp;#34;8100:8000&amp;#34;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>DoomJS</title><link>https://4n6post.com/dockers/doomjs/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/treyyoder/doomjs-docker"&gt;DoomJS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/doom_example.png" alt="Doom Example"&gt;&lt;/p&gt;
&lt;p&gt;DoomJS is a fast, lightweight, and highly customizable game server for the classic first-person shooter game. It allows players to host their own game sessions and provides a variety of options for customization and optimization.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;bash&lt;/span&gt;
&lt;span class="code-line-count"&gt;1 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-bash"&gt;&lt;code class="language-bash"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;docker run -d --name hal-doom --restart always -p 999:8080 callumhoughton22/doom-in-docker&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;8 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; doom:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: callumhoughton22/doom-in-docker
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; hostname: doomjs
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; container_name: doomjs
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - &amp;#34;999:8080&amp;#34;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Draw.io</title><link>https://4n6post.com/dockers/drawio/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Draw.io is a web-based diagramming tool that allows users to create flowcharts, UML diagrams, and various other types of visual representations. It is designed for collaboration and can be used for prototyping, design, and visualization tasks.&lt;/p&gt;
&lt;p&gt;It provides a user-friendly interface and supports a wide range of diagram types, making it suitable for both technical and non-technical users. It can be integrated into various platforms and is often used in software development, project management, and educational contexts.&lt;/p&gt;</description></item><item><title>DuckDNS</title><link>https://4n6post.com/dockers/duckdns/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://www.duckdns.org/"&gt;DuckDNS.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://github.com/homarr-labs/dashboard-icons/blob/main/png/duckdns.png?raw=true" alt="DuckDNS Logo"&gt;&lt;/p&gt;
&lt;p&gt;DuckDNS is a free dynamic DNS service that allows you to keep your domain name pointed to your dynamic IP address. It is a simple and effective solution for users who want to access their home network or self-hosted services from anywhere in the world without worrying about IP address changes.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;16 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; duckdns:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: lscr.io/linuxserver/duckdns:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: duckdns
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; network_mode: host
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - PUID=1000
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - PGID=1000
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - TZ=Etc/UTC
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - SUBDOMAINS=${DUCKDNS_DOMAIN}
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - TOKEN=${DUCKDNS_TOKEN}
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - UPDATE_IP=ipv4
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - LOG_FILE=false
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - /root/duckdns/config:/config&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;env&lt;/span&gt;
&lt;span class="code-line-count"&gt;2 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-env"&gt;&lt;code class="language-env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;DUCKDNS_DOMAIN=&amp;#34;subdomain1,subdomain2&amp;#34;
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;DUCKDNS_TOKEN=your_duckdns_token&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Etherpad</title><link>https://4n6post.com/dockers/etherpad/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Etherpad is a collaborative real-time editor that allows multiple users to create and edit documents simultaneously. It is designed for productivity and teamwork, providing features such as version control, chat, and document sharing.
It is an open-source web application that can be self-hosted, making it a popular choice for teams and organizations looking for a flexible and customizable text editing solution.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/etherpad_example.png" alt="Etherpad Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;50 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; app:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; user: &amp;#34;0:0&amp;#34;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: etherpad/etherpad:latest
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; tty: true
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; stdin_open: true
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - plugins:/opt/etherpad-lite/src/plugin_packages
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - etherpad-var:/opt/etherpad-lite/var
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - postgres
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; NODE_ENV: production
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; ADMIN_PASSWORD: ${DOCKER_COMPOSE_APP_ADMIN_PASSWORD:-admin}
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; DB_CHARSET: ${DOCKER_COMPOSE_APP_DB_CHARSET:-utf8mb4}
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; DB_HOST: postgres
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; DB_NAME: ${DOCKER_COMPOSE_POSTGRES_DATABASE:-etherpad}
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; DB_PASS: ${DOCKER_COMPOSE_POSTGRES_PASSWORD:-admin}
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; DB_PORT: ${DOCKER_COMPOSE_POSTGRES_PORT:-5432}
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; DB_TYPE: &amp;#34;postgres&amp;#34;
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; DB_USER: ${DOCKER_COMPOSE_POSTGRES_USER:-admin}
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; # For now, the env var DEFAULT_PAD_TEXT cannot be unset or empty; it seems to be mandatory in the latest version of etherpad
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; DEFAULT_PAD_TEXT: ${DOCKER_COMPOSE_APP_DEFAULT_PAD_TEXT:- }
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; DISABLE_IP_LOGGING: ${DOCKER_COMPOSE_APP_DISABLE_IP_LOGGING:-false}
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; SOFFICE: ${DOCKER_COMPOSE_APP_SOFFICE:-null}
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; TRUST_PROXY: ${DOCKER_COMPOSE_APP_TRUST_PROXY:-true}
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; - &amp;#34;${DOCKER_COMPOSE_APP_PORT_PUBLISHED:-9001}:${DOCKER_COMPOSE_APP_PORT_TARGET:-9001}&amp;#34;
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; postgres:
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; image: postgres:15-alpine
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; POSTGRES_DB: ${DOCKER_COMPOSE_POSTGRES_DATABASE:-etherpad}
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; POSTGRES_PASSWORD: ${DOCKER_COMPOSE_POSTGRES_PASSWORD:-admin}
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; POSTGRES_PORT: ${DOCKER_COMPOSE_POSTGRES_PORT:-5432}
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; POSTGRES_USER: ${DOCKER_COMPOSE_POSTGRES_USER:-admin}
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; PGDATA: /var/lib/postgresql/data/pgdata
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; # Exposing the port is not needed unless you want to access this database instance from the host.
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt; # Be careful when other postgres docker container are running on the same port
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt; # ports:
&lt;span class="line-number" data-line="43"&gt;&lt;/span&gt; # - &amp;#34;5432:5432&amp;#34;
&lt;span class="line-number" data-line="44"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="45"&gt;&lt;/span&gt; - postgres_data:/var/lib/postgresql/data/pgdata
&lt;span class="line-number" data-line="46"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="47"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="48"&gt;&lt;/span&gt; postgres_data:
&lt;span class="line-number" data-line="49"&gt;&lt;/span&gt; plugins:
&lt;span class="line-number" data-line="50"&gt;&lt;/span&gt; etherpad-var:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;.env&lt;/span&gt;
&lt;span class="code-line-count"&gt;7 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-.env"&gt;&lt;code class="language-.env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;DOCKER_COMPOSE_APP_PORT_PUBLISHED=9001
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;DOCKER_COMPOSE_APP_PORT_TARGET=9001
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;DOCKER_COMPOSE_APP_DEV_ENV_DEFAULT_PAD_TEXT=&amp;#34;Welcome to MedaPad&amp;#34;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt;DOCKER_COMPOSE_APP_ADMIN_PASSWORD=etherpad
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt;DOCKER_COMPOSE_POSTGRES_DATABASE=db
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt;DOCKER_COMPOSE_POSTGRES_PASSWORD=medapad
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt;DOCKER_COMPOSE_POSTGRES_USER=medapad&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>GitLab</title><link>https://4n6post.com/dockers/gitlab/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;GitLab is a web-based DevOps lifecycle tool that provides a Git repository manager with features like issue tracking, continuous integration/continuous deployment (CI/CD), and more. It is designed to facilitate collaboration among developers and teams, offering a comprehensive platform for software development, project management, and version control.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/gitlab_example.png" alt="GitLab Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;12 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; gitlab:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: gitlab/gitlab-ce:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: GitLab
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; hostname: gitlab
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - 8500:80
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - ./gitlab/config:/etc/gitlab:rw
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - ./gitlab/logs:/var/log/gitlab:rw
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - ./gitlab/data:/var/opt/gitlab:rw&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;.env&lt;/span&gt;
&lt;span class="code-line-count"&gt;1 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-.env"&gt;&lt;code class="language-.env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;EXTERNAL_URL=https://gitlab.4n6post.com&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;h2 id="post-setup-instructions"&gt;Post Setup Instructions&lt;/h2&gt;
&lt;p&gt;While the docker is up and running, you can access GitLab at &lt;code&gt;http://localhost:8500&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Homer</title><link>https://4n6post.com/dockers/homer/</link><pubDate>2024-01-15</pubDate><description>&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/bastienwirtz/homer"&gt;Github.com/b4bz/homer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/homer_example.png" alt="Homer Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;16 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; homer:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: b4bz/homer:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: Homer
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - 80:8080
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; user: 1000:1000 # default
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt;# user: 0:0 # For when Default doesn&amp;#39;t work
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - INIT_ASSETS=1 # default
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - ./assets/:/www/assets
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - ./assets/tools:/www/assets/tools
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - ./assets/custom.css:/www/assets/custom.css
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; assets:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Immich</title><link>https://4n6post.com/dockers/immich/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Immich is a self-hosted photo and video backup solution that allows users to securely store, manage, and share their media files. It offers features like AI-powered search, sharing capabilities, and a user-friendly interface for organizing photos and videos.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/immich_example.png" alt="Immich Example"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;WARNING: Make sure to use the docker-compose.yml of the current release:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml"&gt;https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The compose file on main may not be compatible with the latest release.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;73 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; immich-server:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; container_name: immich_server
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; # extends:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; # file: hwaccel.transcoding.yml
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - ${UPLOAD_LOCATION}:/usr/src/app/upload
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - /etc/localtime:/etc/localtime:ro
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - ${IMMICH_PORT:-2283}:2283
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - redis
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - database
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; disable: false
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; immich-machine-learning:
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; container_name: immich_machine_learning
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; # Example tag: ${IMMICH_VERSION:-release}-cuda
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; # file: hwaccel.ml.yml
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; - ./immich/model-cache:/cache
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; disable: false
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; redis:
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; container_name: immich_redis
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; test: redis-cli ping || exit 1
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt; database:
&lt;span class="line-number" data-line="43"&gt;&lt;/span&gt; container_name: immich_postgres
&lt;span class="line-number" data-line="44"&gt;&lt;/span&gt; image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
&lt;span class="line-number" data-line="45"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="46"&gt;&lt;/span&gt; POSTGRES_PASSWORD: ${DB_PASSWORD}
&lt;span class="line-number" data-line="47"&gt;&lt;/span&gt; POSTGRES_USER: ${DB_USERNAME}
&lt;span class="line-number" data-line="48"&gt;&lt;/span&gt; POSTGRES_DB: ${DB_DATABASE_NAME}
&lt;span class="line-number" data-line="49"&gt;&lt;/span&gt; POSTGRES_INITDB_ARGS: &amp;#39;--data-checksums&amp;#39;
&lt;span class="line-number" data-line="50"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="51"&gt;&lt;/span&gt; - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
&lt;span class="line-number" data-line="52"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="53"&gt;&lt;/span&gt; test: &amp;gt;-
&lt;span class="line-number" data-line="54"&gt;&lt;/span&gt; pg_isready --dbname=&amp;#34;$${POSTGRES_DB}&amp;#34; --username=&amp;#34;$${POSTGRES_USER}&amp;#34; || exit 1;
&lt;span class="line-number" data-line="55"&gt;&lt;/span&gt; Chksum=&amp;#34;$$(psql --dbname=&amp;#34;$${POSTGRES_DB}&amp;#34; --username=&amp;#34;$${POSTGRES_USER}&amp;#34; --tuples-only --no-align
&lt;span class="line-number" data-line="56"&gt;&lt;/span&gt; --command=&amp;#39;SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database&amp;#39;)&amp;#34;;
&lt;span class="line-number" data-line="57"&gt;&lt;/span&gt; echo &amp;#34;checksum failure count is $$Chksum&amp;#34;;
&lt;span class="line-number" data-line="58"&gt;&lt;/span&gt; [ &amp;#34;$$Chksum&amp;#34; = &amp;#39;0&amp;#39; ] || exit 1
&lt;span class="line-number" data-line="59"&gt;&lt;/span&gt; interval: 5m
&lt;span class="line-number" data-line="60"&gt;&lt;/span&gt; start_interval: 30s
&lt;span class="line-number" data-line="61"&gt;&lt;/span&gt; start_period: 5m
&lt;span class="line-number" data-line="62"&gt;&lt;/span&gt; command: &amp;gt;-
&lt;span class="line-number" data-line="63"&gt;&lt;/span&gt; postgres
&lt;span class="line-number" data-line="64"&gt;&lt;/span&gt; -c shared_preload_libraries=vectors.so
&lt;span class="line-number" data-line="65"&gt;&lt;/span&gt; -c &amp;#39;search_path=&amp;#34;$$user&amp;#34;, public, vectors&amp;#39;
&lt;span class="line-number" data-line="66"&gt;&lt;/span&gt; -c logging_collector=on
&lt;span class="line-number" data-line="67"&gt;&lt;/span&gt; -c max_wal_size=2GB
&lt;span class="line-number" data-line="68"&gt;&lt;/span&gt; -c shared_buffers=512MB
&lt;span class="line-number" data-line="69"&gt;&lt;/span&gt; -c wal_compression=on
&lt;span class="line-number" data-line="70"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="71"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="72"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="73"&gt;&lt;/span&gt; model-cache:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;.env&lt;/span&gt;
&lt;span class="code-line-count"&gt;7 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-.env"&gt;&lt;code class="language-.env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;UPLOAD_LOCATION=./immich/media
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;DB_DATA_LOCATION=./immich/postgres
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;IMMICH_VERSION=release
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt;DB_PASSWORD=postgres
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt;DB_USERNAME=postgres
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt;DB_DATABASE_NAME=immich
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt;IMMICH_PORT=1054&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>IT Tools</title><link>https://4n6post.com/dockers/ittools/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;IT Tools is a collection of web-based tools designed for IT professionals. It includes applications like CyberChef for data analysis, Draw.io for diagramming, and other utilities that enhance productivity and collaboration in IT environments.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/it_tools_example.png" alt="IT Tools Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;6 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; it-tools:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: corentinth/it-tools:latest
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - 8800:80&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Linkwarden</title><link>https://4n6post.com/dockers/linkwarden/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://arstech.net/install-linkwarden-on-portainer/"&gt;https://arstech.net/install-linkwarden-on-portainer/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Linkwarden is a self-hosted bookmark manager that allows users to save, organize, and share web links. It provides a web interface for managing bookmarks with features like tagging, archiving, and collaboration, ensuring data privacy and control.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/linkwarden_example.png" alt="Linkwarden Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;30 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; linkwarden:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; container_name: linkwarden
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: ghcr.io/linkwarden/linkwarden:latest
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - ./linkwarden/data:/data/data
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - DATABASE_URL=postgresql://dbuser1:PASSWORD@linkwarden-db:5432/linkwarden
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - NEXTAUTH_SECRET=SuperPassword
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - NEXTAUTH_URL=http://localhost/api/v1/auth
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - &amp;#34;4222:3000&amp;#34;
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - linkwarden_net
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; linkwarden-db:
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; container_name: linkwarden-db
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; image: postgres:16-alpine
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; - POSTGRES_USER=dbuser1
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; - POSTGRES_PASSWORD=PASSWORD
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; - POSTGRES_DB=linkwarden
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - ./linkwarden/pgdata:/var/lib/postgresql/data
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; - linkwarden_net
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt;networks:
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; linkwarden_net:
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; driver: bridge&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Mattermost</title><link>https://4n6post.com/dockers/mattermost/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;MatterMost is an open-source, self-hosted collaboration platform designed for team communication and project management. It provides a web-based interface for messaging, file sharing, and project tracking, making it suitable for teams of all sizes. MatterMost supports real-time chat, threaded conversations, and integrations with various tools, enhancing productivity and collaboration within teams.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://mattermost.com/"&gt;https://mattermost.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Example Playbook - &lt;a href="https://github.com/it33/playbook-templates/blob/main/cyber-crisis-response.json"&gt;https://github.com/it33/playbook-templates/blob/main/cyber-crisis-response.json&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/mattermost_example.png" alt="MatterMost Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;38 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; mattermost:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: &amp;#34;mattermost/mattermost-enterprise-edition:9.5&amp;#34; # https://hub.com/r/mattermost/mattermost-enterprise-edition/tags
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; restart: &amp;#34;unless-stopped&amp;#34;
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; container_name: mattermost
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - &amp;#34;mattermost_db&amp;#34;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - &amp;#34;8065:8065&amp;#34;
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; MM_SQLSETTINGS_DRIVERNAME: &amp;#34;postgres&amp;#34;
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; MM_SQLSETTINGS_DATASOURCE: &amp;#34;postgres://${MM_POSTGRES_USER}:${MM_POSTGRES_PASSWORD}@mattermost_db/${MM_POSTGRES_DB}?sslmode=disable&amp;amp;connect_timeout=10&amp;#34;
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; MM_SERVICESETTINGS_LISTENADDRESS: &amp;#34;:8065&amp;#34;
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; MM_SERVICESETTINGS_SITEURL: &amp;#34;http://10.1.1.2:8065&amp;#34; # Or https://MM.domain.com
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ENABLEBOTACCOUNTCREATION: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ENABLEUSERACCESSTOKENS: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ENABLEOAUTHSERVICEPROVIDER: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ENABLEDEVELOPER: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ENABLETESTING: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; MM_EXPERIMENTALSETTINGS_ENABLEAPPBAR: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; MM_PLUGINSETTINGS_ENABLEUPLOADS: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; MM_LOGSETTINGS_CONSOLELEVEL: &amp;#34;DEBUG&amp;#34;
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; MM_LOGSETTINGS_FILELEVEL: &amp;#34;DEBUG&amp;#34;
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; MM_FILESETTINGS_MAXFILESIZE: 123524266
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; MM_FEATUREFLAGS_AppsEnabled: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; MM_FEATUREFLAGS_PluginApps: &amp;#34;1.1.0&amp;#34; # https://github.com/mattermost/mattermost-plugin-apps/releases
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ENABLELOCALMODE: &amp;#34;true&amp;#34;
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; MM_SERVICESETTINGS_ALLOWEDUNTRUSTEDINTERNALCONNECTIONS: &amp;#34;&amp;#34;
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; mattermost_db:
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; image: &amp;#34;postgres&amp;#34;
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; container_name: mattermost_db
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; restart: &amp;#34;unless-stopped&amp;#34;
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; POSTGRES_PASSWORD: &amp;#34;${MM_POSTGRES_PASSWORD}&amp;#34;
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; POSTGRES_USER: &amp;#34;${MM_POSTGRES_USER}&amp;#34;
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; POSTGRES_DB: &amp;#34;${MM_POSTGRES_DB}&amp;#34;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;.env&lt;/span&gt;
&lt;span class="code-line-count"&gt;5 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-.env"&gt;&lt;code class="language-.env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;MM_POSTGRES_USER=postmm
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;MM_POSTGRES_PASSWORD=postmm
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;MM_POSTGRES_DB=postmm
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt;MM_USER_EMAIL=
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt;MM_USER_PASSWORD=postmm&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Mermaid JS Live Editor - Diagram as Code</title><link>https://4n6post.com/dockers/mermaid-js/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/mermaid-js/mermaid-live-editor"&gt;https://github.com/mermaid-js/mermaid-live-editor&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mermaid JS Live Editor is a web-based tool that allows users to create and visualize diagrams using Mermaid syntax. It supports various types of diagrams, including flowcharts, sequence diagrams, class diagrams, and more. The live editor provides an interactive environment where users can write Mermaid code and see the rendered diagram in real-time.
It is particularly useful for developers, technical writers, and anyone who needs to create diagrams quickly and efficiently. The Mermaid syntax is simple and intuitive, making it easy to learn and use.&lt;/p&gt;</description></item><item><title>MeTube - Web-Based Video Downloader</title><link>https://4n6post.com/dockers/metube/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;MeTube is a web-based YouTube downloader that allows users to download videos from YouTube and other platforms. It features a user-friendly interface, making it easy to search for and download videos in various formats and resolutions. MeTube is designed to be efficient and straightforward, catering to users who want to manage their media content without the complexity of traditional downloaders.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/alexta69/metube"&gt;https://github.com/alexta69/metube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/metube_example.png" alt="MeTube Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;9 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; metube:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: ghcr.io/alexta69/metube
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: metube
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - &amp;#34;8081:8081&amp;#34;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - ./metube/downloads:/downloads&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>n8n - Workflow Automation Platform</title><link>https://4n6post.com/dockers/n8n/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;n8n is a powerful workflow automation tool that allows users to connect various services and automate tasks. It provides a visual interface for creating workflows, enabling users to design complex automations without needing extensive programming knowledge. n8n supports a wide range of integrations with popular applications and services, making it a versatile solution for automating repetitive tasks and streamlining processes.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/n8n_example.png" alt="n8n Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;40 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; n8n:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: n8nio/n8n:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - 8300:5678
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - n8n-db
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; TZ: America/Toronto
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; N8N_PORT: 5678
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; DB_TYPE: postgresdb
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; WEBHOOK_URL: http://10.1.3.160:8300
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; DB_POSTGRESDB_HOST: n8n-db
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; DB_POSTGRESDB_PORT: 5432
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; DB_POSTGRESDB_USER: ${POSTGRES_USER}
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; N8N_SECURE_COOKIE: false
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; - /root/n8n/n8n-data:/home/node/.n8n
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; n8n-db:
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; image: postgres:13-alpine
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; user: &amp;#34;0:0&amp;#34;
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; - /root/n8n/db-data:/var/lib/postgresql/data
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; test: [&amp;#34;CMD-SHELL&amp;#34;, &amp;#34;pg_isready -U postgres&amp;#34;]
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; interval: 10s
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; timeout: 5s
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; retries: 5
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; TZ: America/Toronto
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; POSTGRES_USER: ${POSTGRES_USER}
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; POSTGRES_DB: ${POSTGRES_DB}
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; n8n-n8n-data:
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; n8n-db-data:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;env&lt;/span&gt;
&lt;span class="code-line-count"&gt;4 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-env"&gt;&lt;code class="language-env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;POSTGRES_USER=postgres
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;POSTGRES_PASSWORD=postgres
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;POSTGRES_DB=postgres
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt;N8N_SECURE_COOKIE=false&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;Post setup, you may need to change permissions on the &lt;code&gt;n8n-data&lt;/code&gt; and &lt;code&gt;db-data&lt;/code&gt; directories to ensure that the n8n service can write to them. You can do this by running:&lt;/p&gt;</description></item><item><title>NextCloud - Self-Hosted Cloud Storage &amp; Collaboration</title><link>https://4n6post.com/dockers/nextcloud/</link><pubDate>2024-01-15</pubDate><description>&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://help.nextcloud.com/t/how-to-docker-compose-with-notify-push-2024/186721"&gt;https://help.nextcloud.com/t/how-to-docker-compose-with-notify-push-2024/186721&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/nextcloud_example.png" alt="NextCloud Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;27 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; nc:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: nextcloud:apache
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; - POSTGRES_HOST=ncdb
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - POSTGRES_PASSWORD=nextcloud
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - POSTGRES_DB=nextcloud
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - POSTGRES_USER=nextcloud
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - 8500:80
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - ./nextcloud/nc_data:/var/www/html
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; ncdb:
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; image: postgres:alpine
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - POSTGRES_PASSWORD=nextcloud
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; - POSTGRES_DB=nextcloud
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; - POSTGRES_USER=nextcloud
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; - ./nextcloud/db_data:/var/lib/postgresql/data
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; expose:
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; - 5432
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; db_data:
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; nc_data:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>NexTerm - Multi-Protocol Remote Access Client</title><link>https://4n6post.com/dockers/nexterm/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;NexTerm is a versatile remote desktop client that supports multiple protocols, including RDP, VNC, and SSH. It is designed for IT professionals and users who need to access remote systems securely and efficiently. NexTerm provides a user-friendly interface for managing remote connections, making it an essential tool for remote access and administration.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/nexterm_example.png" alt="NexTerm Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;12 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; nexterm:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: germannewsmaker/nexterm:1.0.6-OPEN-PREVIEW
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: nexterm
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; hostname: nexterm
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: ${SHUFFLE_RESTART_POLICY:-unless-stopped}
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - ENCRYPTION_KEY: $(openssl rand -hex 32)
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - &amp;#34;${NEXTERMPORT:-6989}:6989&amp;#34;
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - /root/utility/nexterm:/app/data&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Nginx Proxy Manager - Reverse Proxy with SSL</title><link>https://4n6post.com/dockers/nginx-proxy-manager/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://nginxproxymanager.com/setup/"&gt;Nginx Proxy Manager&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/nginxreverse_example.png" alt="Nginx Reverse Proxy Example"&gt;&lt;/p&gt;
&lt;p&gt;This guide provides a Docker Compose setup for Nginx Proxy Manager, which allows you to manage your web applications and services with ease. It is designed to work with a Synology NAS or similar systems.&lt;/p&gt;
&lt;h2 id="portainer-setup"&gt;Portainer Setup&lt;/h2&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;34 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; nginx-proxy-manager:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: &amp;#39;jc21/nginx-proxy-manager:latest&amp;#39;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: &amp;#39;nginx-proxy-manager&amp;#39;
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; hostname: &amp;#39;nginx-proxy-manager&amp;#39;
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - &amp;#39;80:80&amp;#39; # Public HTTP Port
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - &amp;#39;443:443&amp;#39; # Public HTTPS Port
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - &amp;#39;81:81&amp;#39; # Admin Web Port
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; DB_POSTGRES_HOST: &amp;#39;npm-db&amp;#39;
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; DB_POSTGRES_PORT: &amp;#39;5432&amp;#39;
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; DB_POSTGRES_USER: $NPM_DBUSER
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; DB_POSTGRES_PASSWORD: $NPM_DBPASS
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; DB_POSTGRES_NAME: &amp;#39;npm&amp;#39;
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; # DISABLE_IPV6: &amp;#39;true&amp;#39;
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; - /root/nxing/data:/data
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; - /root/nxing/letsencrypt:/etc/letsencrypt
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; - npm-db
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; npm-db:
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; image: postgres:latest
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; container_name: &amp;#39;npm-db&amp;#39;
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; hostname: &amp;#39;npm-db&amp;#39;
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; POSTGRES_USER: $NPM_DBUSER
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; POSTGRES_PASSWORD: $NPM_DBPASS
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; POSTGRES_DB: &amp;#39;npm&amp;#39;
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; - /root/nxing/postgres:/var/lib/postgresql/data&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;env&lt;/span&gt;
&lt;span class="code-line-count"&gt;2 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-env"&gt;&lt;code class="language-env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;NPM_DBUSER=&amp;#39;nginx&amp;#39;
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;NPM_DBPASS=&amp;#39;nginx&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Ollama &amp; Open WebUI - Self-Hosted AI Models</title><link>https://4n6post.com/dockers/ollama-open-webui/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref&lt;/strong&gt;: &lt;a href="https://gist.githubusercontent.com/usrbinkat/de44facc683f954bf0cca6c87e2f9f88/raw/0402e8441de57ccd8b00fe0db8ad40cae7d5fdb8/docker-compose.yaml"&gt;Docker Compose - usrbinkat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ollama is a platform that allows users to run AI models locally, providing a self-hosted solution for machine learning applications. Open WebUI is a web interface that interacts with Ollama, enabling users to easily access and manage AI models through a user-friendly dashboard.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/ollama_open_webui_example.png" alt="Ollama and Open WebUI Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;67 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; open-webui:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; container_name: open-webui
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: ghcr.io/open-webui/open-webui:main
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - MODEL_DOWNLOAD_DIR=./models
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - OLLAMA_API_BASE_URL=http://ollama:11434
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - OLLAMA_API_URL=http://ollama:11434
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - LOG_LEVEL=debug
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - WEBUI_SECRET_KEY=your_secret_key # Add this to prevent logouts after updates
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - ./data:/data
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - ./models:/models
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - ./open-webui:/app/backend/data # Corrected path based on documentation
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - &amp;#34;8081:8080&amp;#34;
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; logging:
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; driver: json-file
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; options:
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; max-size: &amp;#34;5m&amp;#34;
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; max-file: &amp;#34;2&amp;#34;
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; - ollama
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; extra_hosts:
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - &amp;#34;host.docker.internal:host-gateway&amp;#34;
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; - ollama
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; ollama:
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; container_name: ollama
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; image: ollama/ollama:latest
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; #runtime: nvidia
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; - NVIDIA_VISIBLE_DEVICES=all
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; - NVIDIA_DRIVER_CAPABILITIES=compute,utility
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; - CUDA_VISIBLE_DEVICES=0
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; - LOG_LEVEL=debug
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; deploy:
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; resources:
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt; reservations:
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt; devices:
&lt;span class="line-number" data-line="43"&gt;&lt;/span&gt; - driver: nvidia
&lt;span class="line-number" data-line="44"&gt;&lt;/span&gt; capabilities: [gpu]
&lt;span class="line-number" data-line="45"&gt;&lt;/span&gt; count: all
&lt;span class="line-number" data-line="46"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="47"&gt;&lt;/span&gt; - ./ollama:/root/.ollama
&lt;span class="line-number" data-line="48"&gt;&lt;/span&gt; - ./models:/models
&lt;span class="line-number" data-line="49"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="50"&gt;&lt;/span&gt; - &amp;#34;11434:11434&amp;#34;
&lt;span class="line-number" data-line="51"&gt;&lt;/span&gt; logging:
&lt;span class="line-number" data-line="52"&gt;&lt;/span&gt; driver: json-file
&lt;span class="line-number" data-line="53"&gt;&lt;/span&gt; options:
&lt;span class="line-number" data-line="54"&gt;&lt;/span&gt; max-size: &amp;#34;5m&amp;#34;
&lt;span class="line-number" data-line="55"&gt;&lt;/span&gt; max-file: &amp;#34;2&amp;#34;
&lt;span class="line-number" data-line="56"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="57"&gt;&lt;/span&gt; - ollama
&lt;span class="line-number" data-line="58"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="59"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="60"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="61"&gt;&lt;/span&gt; data:
&lt;span class="line-number" data-line="62"&gt;&lt;/span&gt; models:
&lt;span class="line-number" data-line="63"&gt;&lt;/span&gt; ollama:
&lt;span class="line-number" data-line="64"&gt;&lt;/span&gt; open-webui:
&lt;span class="line-number" data-line="65"&gt;&lt;/span&gt;networks:
&lt;span class="line-number" data-line="66"&gt;&lt;/span&gt; ollama:
&lt;span class="line-number" data-line="67"&gt;&lt;/span&gt; driver: bridge&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Paperless-ngx - Document Management System</title><link>https://4n6post.com/dockers/paperless-ngx/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Paperless-ngx is a document management system designed for archiving and managing digital documents. It allows users to scan, upload, and organize documents efficiently, providing features like OCR (Optical Character Recognition) to make documents searchable. Paperless-ngx is self-hosted, ensuring data privacy and control over your documents.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/paperless_example.png" alt="Paperless Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;40 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; paperless-redis:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: &amp;#39;docker.io/library/redis:7&amp;#39;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; - &amp;#39;./paperless/redisdata:/data&amp;#39;
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; hostname: paperless-redis
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; container_name: Paperless-Redis
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; paperless-db:
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; image: &amp;#39;docker.io/library/postgres:16&amp;#39;
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - POSTGRES_PASSWORD=paperless
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - POSTGRES_USER=paperless
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - POSTGRES_DB=paperless
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - &amp;#39;./paperless/pgdata:/var/lib/postgresql/data&amp;#39;
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; hostname: paperless-db
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; container_name: Paperless-DB
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; paperless-ngx:
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; image: &amp;#39;ghcr.io/paperless-ngx/paperless-ngx:latest&amp;#39;
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; - PAPERLESS_REDIS=redis://Paperless-Redis:6379
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; - PAPERLESS_DBHOST=Paperless-DB
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; - PAPERLESS_OCR_LANGUAGE=eng
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; - USERMAP_UID=1000
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; - USERMAP_GID=1000
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; - PAPERLESS_OCR_LANGUAGES=fra
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; - &amp;#39;./paperless/data:/usr/src/paperless/data&amp;#39;
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; - &amp;#39;./paperless/media:/usr/src/paperless/media&amp;#39;
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; - &amp;#39;./paperless/export:/usr/src/paperless/export&amp;#39;
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; - &amp;#39;./paperless/consume:/usr/src/paperless/consume&amp;#39;
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; - &amp;#39;8000:8000&amp;#39;
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; hostname: paperless-ngx
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; container_name: Paperless-NGX&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Photopea - Web-Based Image Editor</title><link>https://4n6post.com/dockers/photopea/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Photopea is a web-based image editor that provides functionality similar to Adobe Photoshop. It supports a wide range of file formats, including PSD, XCF, Sketch, and more. Photopea is designed for graphic design, photo editing, and other creative tasks, making it a versatile tool for both professionals and hobbyists.&lt;/p&gt;
&lt;p&gt;It offers features such as layers, filters, and advanced editing tools, allowing users to create and manipulate images directly in their web browser without the need for additional software installations.&lt;/p&gt;</description></item><item><title>Planka - Self-Hosted Kanban Board</title><link>https://4n6post.com/dockers/planka/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Planka is a kanban board application designed for managing tasks and projects. It provides a visual interface for organizing work, tracking progress, and collaborating with team members. Planka is suitable for agile project management and supports features like task assignment, due dates, and project boards.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/planka_example.png" alt="Planka Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;49 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; planka:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: ghcr.io/plankanban/planka:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: Planka
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: on-failure
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - ./Planka/user-avatars:/app/public/user-avatars
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - ./Planka/project-background-images:/app/public/project-background-images
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - ./Planka/attachments:/app/private/attachments
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - 8200:1337
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - BASE_URL=http://10.1.1.16:8200
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - DATABASE_URL=postgresql://postgres@postgres/planka
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - SECRET_KEY=notsecretkey
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - DEFAULT_ADMIN_EMAIL=planka@4n6post.com
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - DEFAULT_ADMIN_PASSWORD=planka@4n6post.com
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; - DEFAULT_ADMIN_NAME=admin
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; - DEFAULT_ADMIN_USERNAME=admin
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; depends_on:
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt; - postgres
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; - planka-net
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="25"&gt;&lt;/span&gt; postgres:
&lt;span class="line-number" data-line="26"&gt;&lt;/span&gt; image: postgres:14-alpine
&lt;span class="line-number" data-line="27"&gt;&lt;/span&gt; container_name: Planka_DB
&lt;span class="line-number" data-line="28"&gt;&lt;/span&gt; restart: on-failure
&lt;span class="line-number" data-line="29"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="30"&gt;&lt;/span&gt; - ./Planka/db-data:/var/lib/postgresql/data
&lt;span class="line-number" data-line="31"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="32"&gt;&lt;/span&gt; - POSTGRES_DB=planka
&lt;span class="line-number" data-line="33"&gt;&lt;/span&gt; - POSTGRES_HOST_AUTH_METHOD=trust
&lt;span class="line-number" data-line="34"&gt;&lt;/span&gt; healthcheck:
&lt;span class="line-number" data-line="35"&gt;&lt;/span&gt; test: [&amp;#34;CMD-SHELL&amp;#34;, &amp;#34;pg_isready -U postgres -d planka&amp;#34;]
&lt;span class="line-number" data-line="36"&gt;&lt;/span&gt; interval: 10s
&lt;span class="line-number" data-line="37"&gt;&lt;/span&gt; timeout: 5s
&lt;span class="line-number" data-line="38"&gt;&lt;/span&gt; retries: 5
&lt;span class="line-number" data-line="39"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="40"&gt;&lt;/span&gt; - planka-net
&lt;span class="line-number" data-line="41"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="42"&gt;&lt;/span&gt;networks:
&lt;span class="line-number" data-line="43"&gt;&lt;/span&gt; planka-net:
&lt;span class="line-number" data-line="44"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="45"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="46"&gt;&lt;/span&gt; db-data:
&lt;span class="line-number" data-line="47"&gt;&lt;/span&gt; user-avatars:
&lt;span class="line-number" data-line="48"&gt;&lt;/span&gt; project-background-images:
&lt;span class="line-number" data-line="49"&gt;&lt;/span&gt; attachments:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Portainer - Docker Container Management UI</title><link>https://4n6post.com/dockers/portainer/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Portainer is a lightweight management UI that allows you to easily manage your Docker containers, images, networks, and volumes. It provides a user-friendly interface for monitoring and deploying applications, making it an essential tool for Docker users.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/portainer_example.png" alt="Portainer Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;16 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; portainer-ce:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: &amp;#39;portainer/portainer-ce:latest&amp;#39;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; - &amp;#39;/var/run/docker.sock:/var/run/docker.sock&amp;#39;
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - &amp;#39;portainer_data:/data&amp;#39;
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; command: &amp;#39;-H unix:///var/run/docker.sock&amp;#39;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - &amp;#39;9443:9000&amp;#39;
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; restart: &amp;#39;always&amp;#39;
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; hostname: portainer
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; container_name: Portainer
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; portainer_data:
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; driver: local&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;p&gt;If you want an agent, this is the configuration:&lt;/p&gt;</description></item><item><title>QuakeJS - Classic FPS in Your Browser</title><link>https://4n6post.com/dockers/quakejs/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/treyyoder/quakejs-docker"&gt;QuakeJS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/treyyoder/quakejs-docker/refs/heads/master/quakejs-docker.png?raw=true" alt="Quake Logo"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="../images/quakejs_example.png" alt="QuakeJS Example"&gt;&lt;/p&gt;
&lt;p&gt;Quake is a fast, lightweight, and highly customizable game server for the classic first-person shooter game. It allows players to host their own game sessions and provides a variety of options for customization and optimization.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;11 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; hal-quake:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: treyyoder/quakejs
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: Quake
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - HTTP_PORT=666
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - SERVER=$IP
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - &amp;#34;27960:27960&amp;#34;
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - &amp;#34;666:80&amp;#34;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;env&lt;/span&gt;
&lt;span class="code-line-count"&gt;1 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-env"&gt;&lt;code class="language-env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;IP=your_ip_address&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Regex101 - Regular Expression Tester</title><link>https://4n6post.com/dockers/regex101/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Regex101 is a web-based tool designed for testing and debugging regular expressions. It provides an interactive environment where users can write, test, and visualize the behavior of regex patterns against sample text. This tool is particularly useful for developers, data analysts, and anyone who works with text processing and validation.&lt;/p&gt;
&lt;h2 id="regex101-stack"&gt;Regex101 Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/regex101_example.png" alt="Regex101 Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;7 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; regex101:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: loopsun/regex101:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: regex101
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - 8400:9090&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>TheHive - Security Incident Response Platform</title><link>https://4n6post.com/dockers/thehive/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://docs.strangebee.com/cortex/installation-and-configuration/step-by-step-guide/#java-virtual-machine"&gt;Strangebee - Installation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TheHive is a scalable, open-source Security Incident Response Platform (SIRP) designed to assist security teams in managing and responding to incidents effectively. It provides a web-based interface for incident management, collaboration, and integration with various security tools, making it suitable for organizations of all sizes.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/thehive_example.png" alt="TheHive Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;24 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; hal-thehive:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: thehiveproject/thehive4:4.1
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: Thehive4
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - &amp;#34;8700:9000&amp;#34;
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - ./thehive/config/thehive/application.conf:/etc/thehive/application.conf
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - ./thehive/volumes/thehive/db:/opt/thp/thehive/db
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - ./thehive/volumes/thehive/index:/opt/thp/thehive/index
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - ./thehive/volumes/thehive/data:/opt/thp/thehive/data
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - MAX_HEAP_SIZE=2G
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - HEAP_NEWSIZE=2G
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; networks:
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - thehive
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt;networks:
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; thehive:
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt;
&lt;span class="line-number" data-line="21"&gt;&lt;/span&gt;volumes:
&lt;span class="line-number" data-line="22"&gt;&lt;/span&gt; thehive_db:
&lt;span class="line-number" data-line="23"&gt;&lt;/span&gt; thehive_index:
&lt;span class="line-number" data-line="24"&gt;&lt;/span&gt; thehive_data:&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>TOSIOS - Multiplayer Web Game</title><link>https://4n6post.com/dockers/tosios/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/halftheopposite/TOSIOS"&gt;TOSIOS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://github.com/halftheopposite/TOSIOS/blob/master/images/title.png?raw=true" alt="TOSIOS Logo"&gt;&lt;/p&gt;
&lt;p&gt;TOSIOS is a self-hosted, open-source web game that supports multiple players. It is designed to be played in a web browser and offers a unique gaming experience with strategic elements. Players can join games, compete against each other, and enjoy the game without the need for any installations.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/tosios_example.png" alt="TOSIOS Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;7 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; tosios:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: halftheopposite/tosios
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: tosios
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; restart: always
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - 3001:3001&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Vaultwarden - Self-Hosted Password Manager</title><link>https://4n6post.com/dockers/vaultwarden/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Vaultwarden is a self-hosted password manager that provides a secure and convenient way to store and manage passwords. It is an open-source alternative to Bitwarden, allowing users to maintain control over their data while benefiting from a user-friendly interface and robust security features. Vaultwarden supports various authentication methods, including two-factor authentication, and offers features like password sharing, organization management, and secure note storage. It is designed to be lightweight and efficient, making it suitable for both personal and organizational use.&lt;/p&gt;</description></item><item><title>Velociraptor - Endpoint Visibility &amp; Digital Forensics</title><link>https://4n6post.com/dockers/velociraptor/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;Velociraptor is a web-based tool designed for endpoint visibility and management. It provides a user-friendly interface for monitoring and managing endpoints, making it an essential tool for security professionals and system administrators.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/velociraptor_example.png" alt="Velociraptor Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;18 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; velociraptor:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: wlambert/velociraptor:latest
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: Velociraptor
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; hostname: velociraptor
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; restart: unless-stopped
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - &amp;#34;8000:8000&amp;#34;
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - &amp;#34;8001:8001&amp;#34;
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - &amp;#34;8889:8889&amp;#34;
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - ./velociraptor:/velociraptor/:rw
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; - VELOX_USER=${VELOX_USER}
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - VELOX_PASSWORD=${VELOX_PASSWORD}
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; - VELOX_ROLE=${VELOX_ROLE}
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - VELOX_SERVER_URL=${VELOX_SERVER_URL}
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; - VELOX_FRONTEND_HOSTNAME=${VELOX_FRONTEND_HOSTNAME}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;env&lt;/span&gt;
&lt;span class="code-line-count"&gt;6 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-env"&gt;&lt;code class="language-env"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;# VELOX_USER=admin
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt;# VELOX_PASSWORD=admin
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt;# VELOX_ROLE=administrator
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt;# VELOX_SERVER_URL=https://10.1.1.16:8889
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt;# VELOX_FRONTEND_HOSTNAME=MedaRaptor
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt;# VELOX_SERVER_URL2=https://raptor.4n6post.com/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>VS Code Server - Browser-Based IDE</title><link>https://4n6post.com/dockers/vscode/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;VSCode Server is a web-based version of Visual Studio Code that allows developers to work remotely on their projects using a web browser. It provides a full-featured development environment with support for extensions, debugging, and collaboration, making it an ideal tool for remote development workflows.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/vscode_example.png" alt="VSCode Server Example"&gt;&lt;/p&gt;
&lt;p&gt;Default Password here: &lt;code&gt;thepassword&lt;/code&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;20 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; vscode:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; command: &amp;#34;code-server --install-extension esbenp.prettier-vscode ms-python.debugpy redhat.vscode-yaml redhat.vscode-xml gitlab.gitlab-workflow vscode-icons-team.vscode-icons yzhang.markdown-all-in-one mechatroner.rainbow-csv oderwat.indent-rainbow shd101wyy.markdown-preview-enhanced grapecity.gc-excelviewer bierner.markdown-mermaid bpruitt-goddard.mermaid-markdown-syntax-highlighting&amp;#34;
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; image: &amp;#34;lscr.io/linuxserver/code-server:latest&amp;#34;
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; environment:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - PUID=1000
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; - PGID=1000
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; - TZ=Etc/UTC
&lt;span class="line-number" data-line="9"&gt;&lt;/span&gt; - PASSWORD=thepassword
&lt;span class="line-number" data-line="10"&gt;&lt;/span&gt; - HASHED_PASSWORD=
&lt;span class="line-number" data-line="11"&gt;&lt;/span&gt; - SUDO_PASSWORD=thepassword
&lt;span class="line-number" data-line="12"&gt;&lt;/span&gt; - SUDO_PASSWORD_HASH=
&lt;span class="line-number" data-line="13"&gt;&lt;/span&gt; - DEFAULT_WORKSPACE=/config/workspace
&lt;span class="line-number" data-line="14"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="15"&gt;&lt;/span&gt; - &amp;#34;./vscode:/config&amp;#34;
&lt;span class="line-number" data-line="16"&gt;&lt;/span&gt; ports:
&lt;span class="line-number" data-line="17"&gt;&lt;/span&gt; - &amp;#34;8443:8443&amp;#34;
&lt;span class="line-number" data-line="18"&gt;&lt;/span&gt; restart: &amp;#34;always&amp;#34;
&lt;span class="line-number" data-line="19"&gt;&lt;/span&gt; hostname: vscode
&lt;span class="line-number" data-line="20"&gt;&lt;/span&gt; container_name: VSCode&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item><item><title>Watchtower - Automatic Docker Container Updates</title><link>https://4n6post.com/dockers/watchtower/</link><pubDate>2024-01-15</pubDate><description>&lt;p&gt;&lt;strong&gt;Ref:&lt;/strong&gt; &lt;a href="https://github.com/containrrr/watchtower.git"&gt;https://github.com/containrrr/watchtower.git&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Watchtower is a tool designed to automatically update running Docker containers whenever a new image is available. It monitors your containers and checks for updates at specified intervals, ensuring that your applications are always running the latest versions without manual intervention.&lt;/p&gt;
&lt;h2 id="portainer-stack"&gt;Portainer Stack&lt;/h2&gt;
&lt;p&gt;&lt;img src="../images/watchtower_example.png" alt="Watchtower Example"&gt;&lt;/p&gt;
&lt;div class="code-block-wrapper"&gt;
&lt;details class="code-block-collapsible" open&gt;
&lt;summary class="code-block-header"&gt;
&lt;span class="code-language"&gt;yaml&lt;/span&gt;
&lt;span class="code-line-count"&gt;8 lines&lt;/span&gt;
&lt;/summary&gt;
&lt;div class="code-block-content"&gt;
&lt;pre class="line-numbers language-yaml"&gt;&lt;code class="language-yaml"&gt;&lt;span class="line-number" data-line="1"&gt;&lt;/span&gt;services:
&lt;span class="line-number" data-line="2"&gt;&lt;/span&gt; watchtower:
&lt;span class="line-number" data-line="3"&gt;&lt;/span&gt; image: containrrr/watchtower
&lt;span class="line-number" data-line="4"&gt;&lt;/span&gt; container_name: watchtower
&lt;span class="line-number" data-line="5"&gt;&lt;/span&gt; volumes:
&lt;span class="line-number" data-line="6"&gt;&lt;/span&gt; - /var/run/docker.sock:/var/run/docker.sock
&lt;span class="line-number" data-line="7"&gt;&lt;/span&gt; command: --interval 600 open-webui # Check for updates every 10 minutes
&lt;span class="line-number" data-line="8"&gt;&lt;/span&gt; restart: unless-stopped&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;</description></item></channel></rss>