[{"content":"This little application makes it easier to edit files on the terminal with full mouse, copy-paste support and more! A good one to have in our toolkit.\nNote: The current version of Edit (1.2.0) is not available via the package manager apt yet. This could change at some point in the future, making for an easier deployment.\nInstall Pre-requisites zstd - to decompress the downloaded file\nsudo apt install zstd Install the latest Edit version from GitHub for x86_64 EDIT_VERSION=$(curl -s \u0026#34;https://api.github.com/repos/microsoft/edit/releases/latest\u0026#34; | grep -Po \u0026#39;\u0026#34;tag_name\u0026#34;: \u0026#34;v\\K[0-9.]+\u0026#39;) wget -qO edit.tar.zst https://github.com/microsoft/edit/releases/latest/download/edit-$EDIT_VERSION-x86_64-linux-gnu.tar.zst sudo tar xf edit.tar.zst -C /usr/local/bin edit edit --version rm -rf edit.tar.zst This can easily be made into a script for multiple installations.\n","permalink":"https://djismgaming.github.io/blog/installing-microsoft-edit-debian-ubuntu/","summary":"\u003cp\u003eThis little application makes it easier to edit files on the terminal with full mouse, copy-paste support and more! A good one to have in our toolkit.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: The current version of Edit (1.2.0) is not available via the package manager \u003ccode\u003eapt\u003c/code\u003e yet. This could change at some point in the future, making for an easier deployment.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"install-pre-requisites\"\u003eInstall Pre-requisites\u003c/h2\u003e\n\u003cp\u003ezstd - to decompress the downloaded file\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo apt install zstd\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"install-the-latest-edit-version-from-github-for-x86_64\"\u003eInstall the latest Edit version from GitHub for x86_64\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eEDIT_VERSION\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e\u003cspan style=\"color:#66d9ef\"\u003e$(\u003c/span\u003ecurl -s \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;https://api.github.com/repos/microsoft/edit/releases/latest\u0026#34;\u003c/span\u003e | grep -Po \u003cspan style=\"color:#e6db74\"\u003e\u0026#39;\u0026#34;tag_name\u0026#34;: \u0026#34;v\\K[0-9.]+\u0026#39;\u003c/span\u003e\u003cspan style=\"color:#66d9ef\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ewget -qO edit.tar.zst https://github.com/microsoft/edit/releases/latest/download/edit-$EDIT_VERSION-x86_64-linux-gnu.tar.zst\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo tar xf edit.tar.zst -C /usr/local/bin edit\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eedit --version\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003erm -rf edit.tar.zst\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis can easily be made into a script for multiple installations.\u003c/p\u003e","title":"Installing Microsoft Edit in Debian or Ubuntu based distros"},{"content":"Install glances and keep it running for showing gethomepage.dev system stats This will make the glances application run in the background on every reboot and provide the necessary metrics for homepage.\nInstall pip:\nsudo apt install python3-pip Install glances with pip for this user:\npip install --user \u0026#39;glances[web]\u0026#39; Re source your .profile for the new executable for glances to be in your current environment:\nsource ~/.profile Update the crontab to run glances at startup without web UI but able to share system metrics (no web UI to make it more efficient):\n# this goes on crontab @reboot /home/ismael/.local/bin/glances -w --disable-webui Reboot the server and glances should be running after this automatically on every reboot. Works great in an LXC container.\nCreate the services.yaml entry for gethomepage.dev to show server root usage stats:\nNote: There are a bunch of strings on this YAML that are customized to your liking. See https://gethomepage.dev/widgets/services/glances/ for the specifics on the Glances widget.\n... - Docker: - mini-docker: icon: docker.png widgets: - type: glances url: http://\u0026lt;IP of server\u0026gt;:61208 version: 4 # main version of glances used metric: fs:/ # showing root usage ... At the end it should look something like this:\n","permalink":"https://djismgaming.github.io/blog/install-glances-for-gethomepage-dev-stats/","summary":"\u003ch1 id=\"install-glances-and-keep-it-running-for-showing-gethomepagedev-system-stats\"\u003eInstall glances and keep it running for showing gethomepage.dev system stats\u003c/h1\u003e\n\u003cp\u003eThis will make the \u003ccode\u003eglances\u003c/code\u003e application run in the background on every reboot and provide the necessary metrics for homepage.\u003c/p\u003e\n\u003cp\u003eInstall pip:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo apt install python3-pip\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eInstall glances with pip for this user:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epip install --user \u003cspan style=\"color:#e6db74\"\u003e\u0026#39;glances[web]\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eRe source your \u003ccode\u003e.profile\u003c/code\u003e for the new executable for \u003ccode\u003eglances\u003c/code\u003e to be in your current environment:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esource ~/.profile\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eUpdate the crontab to run glances at startup without web UI but able to share system metrics (no web UI to make it more efficient):\u003c/p\u003e","title":"Install glances and keep it running for showing gethomepage.dev system stats"},{"content":"iGPU GVT-g Split Passthrough (Intel Integrated Graphics) Original post: https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-split-passthrough/\nIntroduction Intel Integrated Graphics (iGPU) is a GPU that is integrated into the CPU. The GPU is a part of the CPU and is used to render graphics. Proxmox may be configured to use iGPU split passthrough to VM to allow the VM to use the iGPU for hardware acceleration for example using video encoding/decoding and Transcoding for series like Plex, Emby, and Jellyfin.\nWarning: Your mileage may vary depending on your hardware. The following guide was tested with Intel Gen8 CPU.\nSupported CPUs: iGPU GVT-g Split Passthrough is supported only on Intel\u0026rsquo;s 5th generation to 10th generation CPUs!\nKnown supported CPU families:\nBroadwell Skylake Kaby Lake Coffee Lake Comet Lake There are two ways to use iGPU passthrough to VM. The first way is to use the Full iGPU Passthrough to VM. The second way is to use the iGPU GVT-g technology which allows us to split the iGPU into two parts. We will be covering the Split iGPU Passthrough.\nProxmox Configuration for GVT-g Split Passthrough The following examples uses SSH connection to the Proxmox server. The editor is nano but feel free to use any other editor. We will be editing the grub configuration file.\nEdit the grub configuration file.\nnano /etc/default/grub Find the line that starts with GRUB_CMDLINE_LINUX_DEFAULT by default they should look like this:\nGRUB_CMDLINE_LINUX_DEFAULT=\u0026#34;quiet\u0026#34; We want to allow passthrough and Blacklists known graphics drivers to prevent proxmox from utilizing the iGPU.\nYour GRUB_CMDLINE_LINUX_DEFAULT should look like this:\nGRUB_CMDLINE_LINUX_DEFAULT=\u0026#34;quiet intel_iommu=on i915.enable_gvt=1 iommu=pt pcie_acs_override=downstream,multifunction video=efifb:off video=vesa:off vfio_iommu_type1.allow_unsafe_interrupts=1 kvm.ignore_msrs=1 modprobe.blacklist=radeon,nouveau,nvidia,nvidiafb,nvidia-gpu\u0026#34; Note: This will blacklist most of the graphics drivers from proxmox. If you have a specific driver you need to use for Proxmox Host you need to remove it from modprobe.blacklist\nSave and exit the editor.\nUpdate the grub configuration to apply the changes the next time the system boots.\nupdate-grub Next we need to add vfio modules to allow PCI passthrough.\nEdit the /etc/modules file.\nnano /etc/modules Add the following line to the end of the file:\n# Modules required for PCI passthrough vfio vfio_iommu_type1 vfio_pci vfio_virqfd # Modules required for Intel GVT-g Split kvmgt Save and exit the editor.\nUpdate configuration changes made in your /etc filesystem\nupdate-initramfs -u -k all Reboot Proxmox to apply the changes\nVerify that IOMMU is enabled\ndmesg | grep -e DMAR -e IOMMU There should be a line that looks like DMAR: IOMMU enabled. If there is no output, something is wrong.\nWindows Virtual Machine iGPU Passthrough Configuration For better results its recommend to use a Windows 10/11 Virtual Machine configuration for proxmox.\nFind the PCI address of the iGPU.\nlspci -nnv | grep VGA This should result in output similar to this:\n00:02.0 VGA compatible controller [0300]: Intel Corporation CometLake-S GT2 [UHD Graphics 630] [8086:3e92] (prog-if 00 [VGA controller]) If you have multiple VGA, look for the one that has the Intel in the name.\nHere, the PCI address of the iGPU is 00:02.0.\nFor best performance the VM should be configured the Machine type to q35.\nThis will allow the VM to utilize PCI-Express passthrough.\nOpen the web gui and navigate to the Hardware tab of the VM you want to add a vGPU.\nClick Add above the device list and then choose PCI Device\nOpen the Device dropdown and select the iGPU, which you can find using it\u0026rsquo;s PCI address. This list uses a different format for the PCI addresses id, 00:02.0 is listed as 0000:00:02.0.\nClick Mdev Type, You should be presented with a list of the available split passthrough devices choose the better performing one for the vm.\nSelect ROM-Bar, PCI-Express and then click Add.\nPower on the Windows Virtual Machine.\nOpen the VM\u0026rsquo;s Console. Install the latest version of Intel\u0026rsquo;s Graphics Driver{target=_blank} or use the [Intel Driver \u0026amp; Support Assistant](https://www.intel.com/content/www/us/en/support-detect.html#tool downloader){target=_blank} installer.\nIf all went well you should see the following output in Device Manager and GPU-Z{target=_blank}.\nThat\u0026rsquo;s it! You should now be able to use the iGPU for hardware acceleration inside the VM and still have proxmox\u0026rsquo;s output on the screen.\nLinux Virtual Machine iGPU Passthrough Configuration We will be using Ubuntu Server 20.04 LTS for this guide.\nFrom Proxmox Terminal find the PCI address of the iGPU.\nlspci -nnv | grep VGA This should result in output similar to this:\n00:02.0 VGA compatible controller [0300]: Intel Corporation CometLake-S GT2 [UHD Graphics 630] [8086:3e92] (prog-if 00 [VGA controller]) If you have multiple VGA, look for the one that has the Intel in the name.\nHere, the PCI address of the iGPU is 00:02.0.\nVM should be configured the Machine type to i440fx.\nOpen the web gui and navigate to the Hardware tab of the VM you want to add a vGPU to.\nClick Add above the device list and then choose PCI Device\nOpen the Device dropdown and select the iGPU, which you can find using it\u0026rsquo;s PCI address. This list uses a different format for the PCI addresses id, 00:02.0 is listed as 0000:00:02.0.\nClick Mdev Type, You should be presented with a list of the available split passthrough devices choose the better performing one for the vm.\nSelect ROM-Bar, and then click Add.\nBoot the VM. To test the iGPU passthrough was successful, you can use the following command:\nsudo lspci -nnv | grep VGA The output should include the Intel iGPU:\n00:10.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Desktop) [8086:3e92] (prog-if 00 [VGA controller]) Now we need to check if the GPU\u0026rsquo;s Driver initialization is working.\ncd /dev/dri \u0026amp;\u0026amp; ls -la The output should include the renderD128\nThat\u0026rsquo;s it! You should now be able to use the iGPU for hardware acceleration inside the VM and still have proxmox\u0026rsquo;s output on the screen.\nDebug Debug Messages - Shows Hardware initialization and errors\ndmesg -w Display PCI devices information\nlspci Display Driver in use for PCI devices\nlspci -k Display IOMMU Groups the PCI devices are assigned to\n#!/bin/bash shopt -s nullglob for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do echo \u0026#34;IOMMU Group ${g##*/}:\u0026#34; for d in $g/devices/*; do echo -e \u0026#34;\\t$(lspci -nns ${d##*/})\u0026#34; done; done; ","permalink":"https://djismgaming.github.io/blog/igpu-gvt-g-split-passthrough/","summary":"\u003ch1 id=\"igpu-gvt-g-split-passthrough-intel-integrated-graphics\"\u003eiGPU GVT-g Split Passthrough (Intel Integrated Graphics)\u003c/h1\u003e\n\u003cp\u003eOriginal post: \u003ca href=\"https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-split-passthrough/\"\u003ehttps://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-split-passthrough/\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eIntel Integrated Graphics (iGPU) is a GPU that is integrated into the CPU. The GPU is a part of the CPU and is used to render graphics. Proxmox may be configured to use iGPU split passthrough to VM to allow the VM to use the iGPU for hardware acceleration for example using video encoding/decoding and Transcoding for series like \u003ca href=\"https://plex.tv\"\u003ePlex\u003c/a\u003e, \u003ca href=\"https://emby.org\"\u003eEmby\u003c/a\u003e, and \u003ca href=\"https://jellyfin.org\"\u003eJellyfin\u003c/a\u003e.\u003c/p\u003e","title":"iGPU GVT-g Split Passthrough"},{"content":"Why do this There are a multitude of reasons to do this or use an application like the one shared here. Maybe there is an application that phones home and you need to test how it behaves when it loses connection with a URL. Or there is a need to set this up to keep a system from accessing unsecure sites/services online.\nWhere to get hostctl from hostctl\u0026rsquo;s GitHub page: https://github.com/guumaster/hostctl\nHow to use hostctl Here is a simple example to use this app to update the hosts file with a hosted list on a specific URL.\nRemember: This application works in multiple OSs. I\u0026rsquo;m just showing how to use it on Windows as an example.\nDomains list Example URL: https://listwebsite.local/list.txt\nPut the executable in a directory covered by your PATH variable. Execute something like the following hostctl add \u0026lt;myprofilename\u0026gt; -f https://listwebsite.local/list.txt The executable will create a profile called myprofilename inside the hosts file. That is to keep additions separate from the default/manually entered ones already in the hosts file. This application can be used to perform backups and restores of the hosts file too. More about it can be found in the documentation at: https://guumaster.github.io/hostctl/\n","permalink":"https://djismgaming.github.io/blog/auto-update-windows-hosts-file/","summary":"\u003ch2 id=\"why-do-this\"\u003eWhy do this\u003c/h2\u003e\n\u003cp\u003eThere are a multitude of reasons to do this or use an application like the one shared here. Maybe there is an application that phones home and you need to test how it behaves when it loses connection with a URL. Or there is a need to set this up to keep a system from accessing unsecure sites/services online.\u003c/p\u003e\n\u003ch2 id=\"where-to-get-hostctl-from\"\u003eWhere to get hostctl from\u003c/h2\u003e\n\u003cp\u003ehostctl\u0026rsquo;s GitHub page: \u003ca href=\"https://github.com/guumaster/hostctl\"\u003ehttps://github.com/guumaster/hostctl\u003c/a\u003e\u003c/p\u003e","title":"Auto-update the Windows hosts file with a hosted list"},{"content":"The issue Upon connecting the GOG Galaxy client to Ubisoft Connect, it goes into a disconnected state again. This happens just seconds after signing in to the Ubisoft Connect account using the plugin\u0026rsquo;s login.\nHow to fix the issue Note: This seems to be an open issue in the GitHub repo referenced below. A definitive solution has not been found as this method needs to be re-applied from time to time.\nWe can use a solution shared on a Reddit post:\nNot able to connect my ubisoft connect with GoG galaxy\nby u/ved7108 in gog\nAnd this is also shared in this GitHub issue:\nhttps://github.com/FriendsOfGalaxy/galaxy-integration-uplay/issues/33#issuecomment-1444362239\nThe basics are here for reference:\nClick on the \u0026ldquo;Connect\u0026rdquo; button in the Ubisoft Connect integration settings on GOG Galaxy Upon getting the screen, copy the (1) appId and (2) genomeId values from the pop-up URL Image showing the necessary values to copy from the login URL\nModify the file %localappdata%\\GOG.com\\Galaxy\\plugins\\installed\\uplay_afb5a69c-b2ee-4d58-b916-f4cd75d4999a\\consts.py If using VSCode, you can just execute in a powershell shell this command code %localappdata%\\GOG.com\\Galaxy\\plugins\\installed\\uplay_afb5a69c-b2ee-4d58-b916-f4cd75d4999a\\consts.py Find the lines shown below and replace the values with the ones you got from the Ubisoft Connect login screen CLUB_APPID = \u0026#34;f35adcb5-1911-440c-b1c9-48fdc1701c68\u0026#34; CLUB_GENOME_ID = \u0026#34;5b36b900-65d8-47f3-93c8-86bdaa48ab50\u0026#34; Save the file and login into the Ubisoft Connect login screen It should now stay connected as shown below Image showing a working connection to Ubisoft Connect after a successful file modification\nRemember: Remember that this fix, so far, needs to be re-applied if Ubisoft changes the values on their side\n","permalink":"https://djismgaming.github.io/blog/fixing-gog-galaxy-ubisoft-connect-plugin/","summary":"\u003ch2 id=\"the-issue\"\u003eThe issue\u003c/h2\u003e\n\u003cp\u003eUpon connecting the GOG Galaxy client to Ubisoft Connect, it goes into a disconnected state again. This happens just seconds after signing in to the Ubisoft Connect account using the plugin\u0026rsquo;s login.\u003c/p\u003e\n\u003ch2 id=\"how-to-fix-the-issue\"\u003eHow to fix the issue\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This seems to be an open issue in the GitHub repo referenced below. A definitive solution has not been found as this method needs to be re-applied from time to time.\u003c/p\u003e","title":"Fixing the GOG Galaxy 2.0 Ubisoft Connect plugin connection"},{"content":"The script launcher We need a script launcher as PowerShell scripts run in the foreground and we don\u0026rsquo;t want the window of this script to appear at all.\nThis one can be a .vbs file that will be setup like this:\nIn Task Scheduler Action: Start a program Program/script: wscript Add arguments (optional): \u0026lt;path\\to\\the\\.ps1\\file\u0026gt; Here is the .vbs script:\ncommand = \u0026#34;powershell.exe -ExecutionPolicy Bypass C:\\Users\\Ismael\\Documents\\GitHub\\djismgaming.github.io\\blogupdate.ps1\u0026#34; set shell = CreateObject(\u0026#34;WScript.Shell\u0026#34;) shell.Run command, 0 ","permalink":"https://djismgaming.github.io/blog/powershell-hidden-script-task-scheduler/","summary":"\u003ch2 id=\"the-script-launcher\"\u003eThe script launcher\u003c/h2\u003e\n\u003cp\u003eWe need a script launcher as PowerShell scripts run in the foreground and we don\u0026rsquo;t want the window of this script to appear at all.\u003c/p\u003e\n\u003cp\u003eThis one can be a \u003ccode\u003e.vbs\u003c/code\u003e file that will be setup like this:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIn Task Scheduler\n\u003cul\u003e\n\u003cli\u003eAction: Start a program\u003c/li\u003e\n\u003cli\u003eProgram/script: \u003ccode\u003ewscript\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd arguments (optional): \u003ccode\u003e\u0026lt;path\\to\\the\\.ps1\\file\u0026gt;\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHere is the \u003ccode\u003e.vbs\u003c/code\u003e script:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode class=\"language-vbs\" data-lang=\"vbs\"\u003ecommand = \u0026#34;powershell.exe -ExecutionPolicy Bypass C:\\Users\\Ismael\\Documents\\GitHub\\djismgaming.github.io\\blogupdate.ps1\u0026#34;\n\nset shell = CreateObject(\u0026#34;WScript.Shell\u0026#34;)\n\nshell.Run command, 0\n\u003c/code\u003e\u003c/pre\u003e","title":"Run a PowerShell ps1 script hidden from view and scheduled on Task Scheduler for Windows"},{"content":"#!/bin/bash OUTPUT=$(docker image prune -af | tail -1) topicurl=https://ntfy.example.com/topic curl --insecure \\ -d \u0026#34;$OUTPUT\u0026#34; \\ -H \u0026#34;Title: Dangling images cleaned on $(hostname)\u0026#34; \\ $topicurl ","permalink":"https://djismgaming.github.io/blog/ntfy-notifications-from-unraid/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e#!/bin/bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eOUTPUT\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e\u003cspan style=\"color:#66d9ef\"\u003e$(\u003c/span\u003edocker image prune -af | tail -1\u003cspan style=\"color:#66d9ef\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003etopicurl\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003ehttps://ntfy.example.com/topic\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ecurl --insecure \u003cspan style=\"color:#ae81ff\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  -d \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u003c/span\u003e$OUTPUT\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  -H \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;Title: Dangling images cleaned on \u003c/span\u003e\u003cspan style=\"color:#66d9ef\"\u003e$(\u003c/span\u003ehostname\u003cspan style=\"color:#66d9ef\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  $topicurl\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"ntfy notifications from unRAID using curl"},{"content":" UPDATE 2023.10.13 - This post is here just for history\u0026rsquo;s sake as Origin is basically deprecated at this point in time. It\u0026rsquo;s always nice to keep history though.\nUPDATE 2021.08.20 – This is a non-issue for me anymore although now I personally use EA Desktop with the Xbox Game Pass for PC. I have Origin installed but have not used it directly anymore since.\nORIGINAL POST BELOW:\nOrigin can be a bit sluggish at times. But we have to live with it no matter what (for now maybe? who knows).\nRecently I was downloading the latest patch for Apex Legends. But when I saw my client downloading @ 2.5 MB/s on a 70 Mbps connection, I got intrigued to say the least. Mad could be a better description of the moment. I could get up to 8.75 MB/s on that connection theoretically. I use a 1 GBps wired connection for the computer to my router and also a 1 GBps wired connection from said router to the cable company modem. This is a best case scenario for Origin.\nI got into research overdrive that night. Looking over all the internet to find how to fix this. Some reddit posts and forum replies later… I came across this HUGE post on answers.ea.com which has been running for almost 3 years now. People very mad and trying all kind of methods to try to squeeze the most out of their connection. Looking to get better download speeds on Origin to get their games and updates.\nThere was no good fix for this.\nSo I searched deeper and found this little snippet of information from the site https://www.pcgamingwiki.com/. The post section, which you can read here, is in regards to resolving an issue where the Origin client suddenly stops downloading mid-download. But says it has been reported to improve the download speeds also.\nMod hat ON!\nThe excerpt from the site is here for your convenience. Very easy steps:\nExit Origin Create a new empty document on your desktop Enter the following text in the file: [connection] EnvironmentName=production [Feature] CdnOverride=akamai Save the file as EACore.ini. Now start Origin. Upon start you will be asked if you want to import the file you just created on your desktop. Press Yes. This will overwrite your old config-file.\nNote The EACore.ini file is deleted from your desktop as soon as you import it. If you ever want to leave R\u0026amp;D mode you need to go to the location where Origin is installed and delete the EACore.ini file found there. It has been reported that having Origin in R\u0026amp;D-mode will increase your download speed. This made a huge change for me. The client started with a display of \u0026ldquo;R\u0026amp;D | PR\u0026rdquo; in the upper right corner. Then trying the remainder of the patch download I was amazed to see 8.83 MB/s of download speed in Origin.\nAs a note, I also use Google Public DNS in my gaming computer. That is DNS servers:\n8.8.8.8 and 8.8.4.4\nThe patch just took a couple of minutes to download this time. Hope this helps someone out there.\n","permalink":"https://djismgaming.github.io/blog/fix-origin-game-downloads-speed/","summary":"\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eUPDATE 2023.10.13\u003c/strong\u003e - This post is here just for history\u0026rsquo;s sake as Origin is basically deprecated at this point in time. It\u0026rsquo;s always nice to keep history though.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUPDATE 2021.08.20\u003c/strong\u003e – This is a non-issue for me anymore although now I personally use EA Desktop with the Xbox Game Pass for PC. I have Origin installed but have not used it directly anymore since.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eORIGINAL POST BELOW:\u003c/p\u003e\n\u003cp\u003eOrigin can be a bit sluggish at times. But we have to live with it no matter what (for now maybe? who knows).\u003c/p\u003e","title":"Fix your SLOW Origin Games download speeds"},{"content":"Pre-requisites: Create an unprivileged Debian 12 LXC container.\nInside the LXC container, use the root user to create a non-root user with your name. In the case of mine I wanted to add it to the sudo and docker groups after installing Docker inside the LXC container.\nuseradd -s /bin/bash -m -G sudo,docker ismael Change the user password to whatever you need.\nsu ismael passwd This user\u0026rsquo;s default UID:GID will be 1000:1000. If not, create it with:\nuseradd ismael -u 1000 -g 1000 -m -s /bin/bash -G sudo,docker Take note of this UID:GID as we\u0026rsquo;ll use it to map the share in Proxmox. The share itself can be on another system. We\u0026rsquo;ll mount it soon. I use an Unraid VM in this same host for this.\nSMB share In the Proxmox host We\u0026rsquo;ll create a user that can be mapped from the host to the LXC container. If we don\u0026rsquo;t do this step, we\u0026rsquo;ll end up with just read access inside the LXC container.\nProxmox maps the users and groups from the host to the LXC containers starting at UID:GID=100000:100000.\nThe created ismael user then:\nInside the LXC container UID: 1000 Inside the host UID: 101000 Create a group on the host with GID=101000 that will own the directory we\u0026rsquo;ll create for the SMB share\ngroupadd -g 101000 ismael Create the same user that we\u0026rsquo;ll use inside the LXC container but with the right UID:GID combination\nuseradd ismael -u 101000 -g 101000 -m -s /bin/bash Make a directory for the share\nmkdir /mnt/media Change said directory\u0026rsquo;s owner to the previously created user\nchown ismael:ismael /mnt/media Modify the /etc/fstab file to mount the SMB share on the directory we created\nnano /etc/fstab Copy this line inside the nano editor for /etc/fstab (note the guest part as my SMB share does not have a password set)\n//192.168.0.10/media /mnt/media cifs guest,rw,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0 If you use a password for your share\n//192.168.0.10/media /mnt/media cifs username=\u0026lt;username\u0026gt;,password=\u0026lt;password\u0026gt;,rw,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0 Reload the changes to /etc/fstab before mounting\nsystemctl daemon-reload mount -a Create a mountpoint in your LXC container pointing to the created share directory\npct set 104 -mp0 /mnt/media,mp=/mnt/user/media Start your LXC container and the share will be mounted in /mnt/user/media and you should be able to write to it!\niGPU Coming soon\u0026hellip;\n","permalink":"https://djismgaming.github.io/blog/proxmox-unprivileged-lxc-smb-and-igpu/","summary":"\u003ch2 id=\"pre-requisites\"\u003ePre-requisites:\u003c/h2\u003e\n\u003cp\u003eCreate an unprivileged Debian 12 LXC container.\u003c/p\u003e\n\u003cp\u003eInside the LXC container, use the \u003ccode\u003eroot\u003c/code\u003e user to create a non-root user with your name. In the case of mine I wanted to add it to the \u003ccode\u003esudo\u003c/code\u003e and \u003ccode\u003edocker\u003c/code\u003e groups after installing Docker inside the LXC container.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003euseradd -s /bin/bash -m -G sudo,docker ismael\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eChange the user password to whatever you need.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esu ismael\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epasswd\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis user\u0026rsquo;s default \u003ccode\u003eUID:GID\u003c/code\u003e will be \u003ccode\u003e1000:1000\u003c/code\u003e. If not, create it with:\u003c/p\u003e","title":"Mount an SMB share and use iGPU on an unprivileged Debian 12 LXC container in Proxmox"},{"content":"If at some point Proxmox loses connectivity with an SMB/CIFS share, it will not restore the connection by itself until a restart of the Proxmox node is performed.\nWith this tip, you\u0026rsquo;ll make the Proxmox node restore the connection automatically.\nIn your node\u0026rsquo;s shell, create a bash script that looks for mount points in /mnt/pve/ and unmounts them if they become stale:\nnano remount.sh Put this content into the file:\n#!/bin/bash list=$(ls /mnt/pve) for i in $list do status=$(ls /mnt/pve/$i 2\u0026gt;\u0026amp;1) if [[ $status =~ .*Stale.* ]] then umount /mnt/pve/$i fi done Remember to make the script executable by the user creating it:\nchmod 766 /root/remount.sh Add a cron job for this script to run automatically:\n* * * * * /root/remount.sh \u0026gt;/dev/null 2\u0026gt;\u0026amp;1 With that, any SMB/CIFS connections should be restored automatically. That is because the service pvestatd tries to remount every SMB share every 10 seconds.\nThis approach could work for NFS shares too. I have not tested that possibility.\n","permalink":"https://djismgaming.github.io/blog/proxmox-automatically-restore-smb-cifs-share-connections/","summary":"\u003cp\u003eIf at some point Proxmox loses connectivity with an SMB/CIFS share, it will not restore the connection by itself until a restart of the Proxmox node is performed.\u003c/p\u003e\n\u003cp\u003eWith this tip, you\u0026rsquo;ll make the Proxmox node restore the connection automatically.\u003c/p\u003e\n\u003cp\u003eIn your node\u0026rsquo;s shell, create a bash script that looks for mount points in \u003ccode\u003e/mnt/pve/\u003c/code\u003e and unmounts them if they become stale:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enano remount.sh\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ePut this content into the file:\u003c/p\u003e","title":"Proxmox | automatically restore SMB/CIFS share connections"},{"content":"Using Linux directly to interact with Linux servers is pretty great and seamless. But when your daily driver is Windows, this can be a little more cumbersome.\nFor instance, when connecting with the Windows version of OpenSSH there is a way to copy your generated key for simple password-less logins after that.\nGenerate your private and public keys in your Windows PowerShell shell Execute the command below in Windows Terminal or any other terminal in Windows:\nssh-keygen This one will generate the necessary keys in your local host. These will be located in your Windows profile directory under the .ssh/ sub-directory.\nYou can access it in this location on Windows by using the key combination Win + R and then entering this text in the Run window:\n%userprofile%/.ssh/ That directory will include:\nyour generated private key id_rsa your generated public key id_rsa.pub The public key is the one we\u0026rsquo;ll copy into any remote host we want to connect without using a password.\nNow comes the single line I talked about in the title! Using the command below will make the same process like ssh-copy-id would but working with the OpenSSH in Windows. This will copy your SSH keys into the remote host.\nI use the Windows Terminal for this process. Just edit the line with your data. Specifically change the part user@host.address with your correct remote user and host IP/hostname.\ntype .ssh\\id_rsa.pub | ssh user@host.address \u0026#34;mkdir -p .ssh \u0026amp;\u0026amp; cat \u0026gt;\u0026gt; .ssh/authorized_keys\u0026#34; This makes it possible to login directly to your remote host by simply using:\nssh user@host Hope this one helps someone out there!\n","permalink":"https://djismgaming.github.io/blog/windows-ssh-copy-id/","summary":"\u003cp\u003eUsing Linux directly to interact with Linux servers is pretty great and seamless. But when your daily driver is Windows, this can be a little more cumbersome.\u003c/p\u003e\n\u003cp\u003eFor instance, when connecting with the Windows version of OpenSSH there is a way to copy your generated key for simple password-less logins after that.\u003c/p\u003e\n\u003ch2 id=\"generate-your-private-and-public-keys-in-your-windows-powershell-shell\"\u003eGenerate your private and public keys in your Windows PowerShell shell\u003c/h2\u003e\n\u003cp\u003eExecute the command below in Windows Terminal or any other terminal in Windows:\u003c/p\u003e","title":"Set up your SSH key-based authentication from Windows in a single line"},{"content":"A SpeedTouch modem, like a 2007 model Thompson Speedtouch 585V6, is a DSL modem. But with a little tweak, it can be used as a router for your network.\nRun these commands towards the SpeedTouch modem using telnet:\ntelnet \u0026lt;modem ip address\u0026gt; Commands to set up a SpeedTouch DSL modem as a router:\nFor firmware versions 5.3 and lower:\nppp relay flush ppp flush eth flush atm flush atm phonebook flush eth bridge ifdelete intf=ethport4 eth ifadd intf=ethport4 eth ifconfig intf=ethport4 dest=ethif4 retry=10 group=default eth ifattach intf=ethport4 ip ifadd intf=WAN_Port dest=ethport4 ip ifconfig intf=WAN_Port hwaddr=00:11:42:0c:65:1d # This line is needed if MAC address cloning is required, otherwise it\u0026#39;s not necessary dhcp client ifadd intf=WAN_Port dhcp client ifattach intf=WAN_Port nat ifconfig intf=WAN_Port translation=enabled nat ifattach intf=WAN_Port saveall For firmware versions 6.1 and higher:\nppp relay flush ppp flush eth flush atm flush atm phonebook flush eth bridge ifdelete intf=ethport4 eth ifadd intf=eth_wan eth ifconfig intf=eth_wan dest=ethif4 eth ifattach intf=eth_wan ip ifadd intf=ip_wan_eth dest=eth_wan ip ifconfig intf=ip_wan_eth status=up ip ifconfig intf=ip_wan_eth hwaddr=00:11:42:0c:65:1d # This line is needed if MAC address cloning is required, otherwise it\u0026#39;s not necessary ip ifattach intf=ip_wan_eth nat ifconfig intf=ip_wan_eth translation=enabled dhcp client ifadd intf=ip_wan_eth dhcp client ifconfig intf=ip_wan_eth metric=5 dnsmetric=5 dhcp client rqoptions and intf=ip_wan_eth option=dhcp-lease-time dhcp client rqoptions and intf=ip_wan_eth option=dhcp-renewal-time dhcp client rqoptions and intf=ip_wan_eth option=dhcp-rebinding-time dhcp client rqoptions and intf=ip_wan_eth option=subnet-mask dhcp client rqoptions and intf=ip_wan_eth option=classless-static-routes dhcp client rqoptions and intf=ip_wan_eth option=default-routers dhcp client rqoptions and intf=ip_wan_eth option=domain-name-servers dhcp client ifattach intf=ip_wan_eth saveall ","permalink":"https://djismgaming.github.io/blog/speedtouch-modem-as-router/","summary":"\u003cp\u003eA SpeedTouch modem, like a 2007 model Thompson Speedtouch 585V6, is a DSL modem. But with a little tweak, it can be used as a router for your network.\u003c/p\u003e\n\u003cp\u003eRun these commands towards the SpeedTouch modem using \u003ccode\u003etelnet\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003etelnet \u0026lt;modem ip address\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCommands to set up a SpeedTouch DSL modem as a router:\u003c/p\u003e\n\u003cp\u003eFor firmware versions 5.3 and lower:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eppp relay flush\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eppp flush\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eeth flush\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eatm flush\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eatm phonebook flush\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eeth bridge ifdelete intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eethport4\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eeth ifadd intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eethport4\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eeth ifconfig intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eethport4 dest\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eethif4 retry\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e10\u003c/span\u003e group\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003edefault\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eeth ifattach intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eethport4\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eip ifadd intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eWAN_Port dest\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eethport4\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eip ifconfig intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eWAN_Port hwaddr\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e00:11:42:0c:65:1d \u003cspan style=\"color:#75715e\"\u003e# This line is needed if MAC address cloning is required, otherwise it\u0026#39;s not necessary\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003edhcp client ifadd intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eWAN_Port\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003edhcp client ifattach intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eWAN_Port\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enat ifconfig intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eWAN_Port translation\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eenabled\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enat ifattach intf\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eWAN_Port\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esaveall\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFor firmware versions 6.1 and higher:\u003c/p\u003e","title":"SpeedTouch modem as a router"},{"content":"I had to access Portainer in my cloud VM to modify docker containers. I can access it now via any web browser with SSL (https) no problem, but this way is good in a pinch.\nRun this command in your local machine:\nssh -L 9000:127.0.0.1:9000 my_user@my-remote-server This will forward port 9000 to our local machine:\nhttp://localhost:9000 or http://127.0.0.1:9000\nAt this local address the Portainer web UI from the remote server will appear.\nNice and neat little SSH trick!\n","permalink":"https://djismgaming.github.io/blog/ssh-tunneling-web-apps/","summary":"\u003cp\u003eI had to access Portainer in my cloud VM to modify docker containers. I can access it now via any web browser with SSL (https) no problem, but this way is good in a pinch.\u003c/p\u003e\n\u003cp\u003eRun this command in your local machine:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003essh -L 9000:127.0.0.1:9000 my_user@my-remote-server\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis will forward port 9000 to our local machine:\u003c/p\u003e\n\u003cp\u003ehttp://localhost:9000 or http://127.0.0.1:9000\u003c/p\u003e\n\u003cp\u003eAt this local address the Portainer web UI from the remote server will appear.\u003c/p\u003e","title":"SSH Tunneling for easy access to web-based apps from servers"}]