All docker-compose.yml files are stored in ~/docker folder, which then by default is under the network docker_default.
by default for newly created apps, a new folder is created and docker-compose.yml is created for that app for testing
once app testing is complete, the compose file can be moved docker root folder if appropriate or remain
some apps can be grouped together and these compose files are in the root docker folder such as media.yml, network.yml, the grouping allows multiple services to be managed by a single compose. For grouping, some of the property can include
the apps share common properties such as arrs apps
it is preferable for apps to live in same network, eg. teslamate
a large app requiring multiple containers eg. frontend, mysql etc..
apps share similar/same category, such as qBittorrent and nzbget can be put together in downloader.yml even though they do not have common properties or require same networking
The storage used for all containers are bind mount. - application configs are stored in ~/docker/[app] - if an app has multiple components needing persistence (eg. app with database, helpers), a folder will be created as such ~/docker/[app]/postgres etc. - apps that also store non-config data (such as music, documents etc.) and not using a lot of space can bind mount /mnt/nvme/share (a directory on local or another SSD) for fast data access and without spinning up HDD - exceptions are home assistant or its related home automation containers and these are stored at /srv/homeassistant
The entire docker root folder is copied to a NFS share on another computer. With exception of minecraft and home assistant which a specialized method is used.
With docker-compose, a new network is created with the name of folder the compose is located, while it’s possible to change network, it is not straightforward, therefore, there is no points in manually defining networks unless required.
Public172.80.0.0/16 - bridge network for public facing applications with reverse proxy, this way when configuring Nginx Proxy Manager, all it need is to enter container_name:80 rather than IP address.
Nginx Proxy Manager - 172.80.44.3
Other containers will use docker DHCP to get address
Containers that need to public facing can attach to this network Media172.96.0.0/16 - bridge network for arrs, downloader and management applications for easy interconnection when configuring Minecraft172.255.255.0/24 - bridge network for Minecraft related networks
Media Apps - apps related to media acquisition, curation and other functions services for Jellyfin Networking - reverse proxy, DNS, VPN and related services Home Automation - home assistant and its associated functions VNC - containers based on jlesage-vnc-apps or Linuxserver Kasm images, usually desktop apps run in a browser via noVNC Management - tools for managing docker containers or entire server Games - game servers and associated tools Filesharing - apps that share files to other clients Documentation - notes and operation procedures for server infrastructure Authentication - services that handle single sign-on (SSO) with users
All docker-compose.yml files are stored in ~/docker folder, which then by default is under the network docker_default.
by default for newly created apps, a new folder is created and docker-compose.yml is created for that app for testing
once app testing is complete, the compose file can be moved docker root folder if appropriate or remain
some apps can be grouped together and these compose files are in the root docker folder such as media.yml, network.yml, the grouping allows multiple services to be managed by a single compose. For grouping, some of the property can include
the apps share common properties such as arrs apps
it is preferable for apps to live in same network, eg. teslamate
a large app requiring multiple containers eg. frontend, mysql etc..
apps share similar/same category, such as qBittorrent and nzbget can be put together in downloader.yml even though they do not have common properties or require same networking
The storage used for all containers are bind mount.
application configs are stored in ~/docker/[app]
if an app has multiple components needing persistence (eg. app with database, helpers), a folder will be created as such ~/docker/[app]/postgres etc.
apps that also store non-config data (such as music, documents etc.) and not using a lot of space can bind mount /mnt/nvme/share (a directory on local or another SSD) for fast data access and without spinning up HDD
exceptions are home assistant or its related home automation containers and these are stored at /srv/homeassistant
The entire docker root folder is copied to a NFS share on another computer. With exception of minecraft and home assistant which a specialized method is used.
With docker-compose, a new network is created with the name of folder the compose is located, while it’s possible to change network, it is not straightforward, therefore, there is no points in manually defining networks unless required.
Public172.80.0.0/16 - bridge network for public facing applications with reverse proxy, this way when configuring Nginx Proxy Manager, all it need is to enter container_name:80 rather than IP address.
Nginx Proxy Manager - 172.80.44.3
Other containers will use docker DHCP to get address
Containers that need to public facing can attach to this network Media172.96.0.0/16 - bridge network for arrs, downloader and management applications for easy interconnection when configuring Minecraft172.255.255.0/24 - bridge network for Minecraft related networks
Media Apps - apps related to media acquisition, curation and other functions services for Jellyfin Networking - reverse proxy, DNS, VPN and related services Home Automation - home assistant and its associated functions VNC - containers based on jlesage-vnc-apps or Linuxserver Kasm images, usually desktop apps run in a browser via noVNC Management - tools for managing docker containers or entire server Games - game servers and associated tools Filesharing - apps that share files to other clients Documentation - notes and operation procedures for server infrastructure Authentication - services that handle single sign-on (SSO) with users
\ No newline at end of file
diff --git a/search/search_index.json b/search/search_index.json
index 10db849..04ff9b2 100755
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#recent-updates","title":"Recent Updates","text":"
01 Docker Infrastructure
JDownloader
OliveTin
Samba(SMB) Setup
Dynamic DNS Updater Docker
Filebrowser
Mkdocs
Debian-Based Server Setup
Tunneling Basic Services (Jellyfin, Web) with Caddy and Tailscale
yaml highlighting is broken with mdx-breakless-lists
when using heading #, if there are no line breaks between headings, any lists that is after content of the second heading will not be rendered properly, even with mdx-breakless-lists
when referencing a subheading in another file, mkdocs uses [](file.md#heading-with-space) while obsidian uses [](file.md#heading%20with%20space)
Before switching from lists to normal content, a line break is needed, otherwise the text below will be rendered with a indent
mkdocs subheadings [](#subheadings) must be in lower case
Fancy Buttons mkdocs [button text](link.md){ .md-button } Tooltip I\u2019m a tooltip that you can hover or click. [tooltip](https://link \"hover text\") Annotation I\u2019m an annotation, but you need to click the plus icon (1) to show. (2)
annotation 1
annotation 2
Annotation location 1 (1), location (2)\n{ .annotate }\n1. annotation text to be shown\n
Footnote Insert footnote like [^1]1
for inserting footnote [^1]
[^1]: at the end to explain the footnote; not supported in obsidian
from python import python\npython.run(arg1=123, arg2=\"mystr\")[2]\n
#!/bin/bash\nvar=\"myvar\"\necho $var+3\n
# yaml highlighting has to be `yaml` not `yml` and it's broken\n---\nversion: \"2.1\"\nservices:\n clarkson:\n image: lscr.io/linuxserver/clarkson\n container_name: clarkson\n environment:\n\n - PUID=1000\n - PGID=1000\n ports:\n - 3000:3000\n restart: unless-stopped\n
explaining the footnote.\u00a0\u21a9
"},{"location":"Cloud%20VPS/basic-server-setup-caddy-docker-jdownloader/","title":"Basic Server Setup, Caddy, Docker, JDownloader","text":"
Creating the VM in oracle cloud.
Go to instances, new instance.
Select the Always Free image, ARM or x86. 1 core only, recommended 4GB RAM, should be exceed 6 GB.
Choose Ubuntu image.
Download the SSH key and name it accordingly.
Key Pair
Using PuttyGen.
Place the key in ./ssh/openssh_keys
Open PuttyGen, conversion -> import keys
Save the key files as ppk file in root folder of ./ssh
Putty
Grab the IP address in the cloud console
Give a name in saved sessions
Go to behavior, choose these options
Under Data, make sure Terminal-type string is xterm-256color
Under Terminal -> Features, check \u201cdisable application keypad mode\u201d to fix issues with nano
The private key needs to be load in Connection -> SSH -> Auth -> Credentials
To get the IP address of the VPS at any time
curl ifconfig.me\n
Basic Setup + Docker
Installing Caddy web server (simple to use reverse proxy), lightweight, easy and no need for docker. (Nginx is also a good candidate for reverse proxy as the command is easy to memorize and does not require consulting documentation sites. However, the syntax for nginx is extremely complex compared to caddy and might not be easily memorized.
For firewall-cmd, use this command to check all open ports.
sudo firewall-cmd --list-all\n
Using netstat, or pipe it to grep
netstat -tln\n# | grep 8080 etc...\n
Configuring JDownloader
Go to the JDownloader WebUI
Go to Settings
Under general, change the max number of downloads (2) and DL per hoster (1) to minimize issues
Go to MyJDownloader and configure MyJDownloader account
Go to extension modules, install and enable \u201cfolderwatch\u201d
The configuration for JDownloader is complete and should appear and be functional in WebUI. Advanced JDownloader documentation will be covered in detailed in another section. It is recommended to close port 5800 after configuring to prevent others accessing.
Basic Caddy Syntax (if applicable)
If the server that is being setup or restored needs functional service like bookstack or uptime-kuma, reverse proxy is needed.
basically, change all the black values to white when searching for color fore, change everything except blue colors and error color
Enabled Text Color, Speed Meter Text, Speed Meter Average Text, Config Panel Description Text, Config Header Text Color - #ffffffff
Disabled Text Color - #ff666666
basically, when searching for color text, change all to white except for disabled text
"},{"location":"Cloud%20VPS/tunneling-basic-services-jellyfin-web-with-caddy-and-tailscale/","title":"Tunneling Basic Services (Jellyfin, Web) with Caddy and Tailscale","text":"
This procedure is not reproducible yet. Rigorous testing is still required before being documented. Here are the known procedures.
The purpose is to tunnel normal web or network intensive traffic such as Jellyfin when faced with CG-NAT or similar situations (in this case locked down dorm internet), also configure hardware transcoding (in this case NVENC, but Intel QSV for future) to mitigate limitations with Canadian ISP(s).
It is possible to set use the root domain (yoursub.duckdns.org) or a subfolder domain (movies.yousub.duckdns.org) for Jellyfin. After configuring the Caddyfile.
sudo systemctl reload caddy\n
Use netstat to check port 80, 443 is being listened. Make sure to port forward Oracle VPS.
Other Services
Follow the same syntax as the caddy file provided, if the root domain is used, then a subdomain must be used for other services.
Results
Inconclusive yet, more testing required.
"},{"location":"Cloud%20VPS/tunneling-minecraft-server-tcp-only-with-nginx/","title":"Tunneling Minecraft Server (tcp only) with Nginx","text":"
Procedure not reproducible yet, will be documented later.
This will run demucs with CUDA GPU acceleration, make sure to put the path in double quote. The extracted file will be found in the directory where you run the command eg. the default Anaconda prompt starts in ~/separated
All docker-compose.yml files are stored in ~/docker folder, which then by default is under the network docker_default.
by default for newly created apps, a new folder is created and docker-compose.yml is created for that app for testing
once app testing is complete, the compose file can be moved docker root folder if appropriate or remain
some apps can be grouped together and these compose files are in the root docker folder such as media.yml, network.yml, the grouping allows multiple services to be managed by a single compose. For grouping, some of the property can include
the apps share common properties such as arrs apps
it is preferable for apps to live in same network, eg. teslamate
a large app requiring multiple containers eg. frontend, mysql etc..
apps share similar/same category, such as qBittorrent and nzbget can be put together in downloader.yml even though they do not have common properties or require same networking
The storage used for all containers are bind mount. - application configs are stored in ~/docker/[app] - if an app has multiple components needing persistence (eg. app with database, helpers), a folder will be created as such ~/docker/[app]/postgres etc. - apps that also store non-config data (such as music, documents etc.) and not using a lot of space can bind mount /mnt/nvme/share (a directory on local or another SSD) for fast data access and without spinning up HDD - exceptions are home assistant or its related home automation containers and these are stored at /srv/homeassistant
The entire docker root folder is copied to a NFS share on another computer. With exception of minecraft and home assistant which a specialized method is used.
With docker-compose, a new network is created with the name of folder the compose is located, while it\u2019s possible to change network, it is not straightforward, therefore, there is no points in manually defining networks unless required.
Public 172.80.0.0/16 - bridge network for public facing applications with reverse proxy, this way when configuring Nginx Proxy Manager, all it need is to enter container_name:80 rather than IP address.
Nginx Proxy Manager - 172.80.44.3
Other containers will use docker DHCP to get address
Containers that need to public facing can attach to this network Media 172.96.0.0/16 - bridge network for arrs, downloader and management applications for easy interconnection when configuring Minecraft 172.255.255.0/24 - bridge network for Minecraft related networks
Media Apps - apps related to media acquisition, curation and other functions services for Jellyfin Networking - reverse proxy, DNS, VPN and related services Home Automation - home assistant and its associated functions VNC - containers based on jlesage-vnc-apps or Linuxserver Kasm images, usually desktop apps run in a browser via noVNC Management - tools for managing docker containers or entire server Games - game servers and associated tools Filesharing - apps that share files to other clients Documentation - notes and operation procedures for server infrastructure Authentication - services that handle single sign-on (SSO) with users
Notice: In Oracle cloud free tier, the default ubuntu user is 1001, not 1000. For database name, it it bookstackapp, keep in mind when executing restore command. The folder structure is also different. In the solidnerd container, the images are stored at /public-uploads while in LSIO container it is stored at /www/uploads
"},{"location":"Docker%20Apps/bookstack/#backing-up-from-home-pc","title":"Backing Up (from home PC)","text":"
Make sure to copy the oracle-arm-2.key to the appropriate location (~/docker/bookstack/public-uploads)
Also make sure the permission of oracle-arm-2.key is in correct permission (600). Especially changing the permission of public-uploads folder to allow write access.
Do a backup sequence in crontab at 11pm every Tuesday and Friday.
Oracle Cloud Server
0 8 * * 3,6 /home/ubuntu/bookstack.sh\n
#!/bin/bash\n\ncd ~/bookstack/www/uploads #directory where bookstack files scp from home are located\ntar -xvzf images.tar.gz\nsed -i 's/wiki.$homeip.duckdns.org/wiki.$oracle.duckdns.org/g' bookstack_db.sql\nsudo docker exec -i bookstack_db mysql -u root --password=secret bookstackapp < /home/ubuntu/bookstack/www/uploads/bookstack_db.sql\n
Restore the sequence after backup, every Wednesday and Saturday at 8am (need to consider the TZ between Vancouver, Edmonton and Toronto, or any the time zone of the remote server)
"},{"location":"Docker%20Apps/ddns-update/","title":"Dynamic DNS Updater Docker","text":"
Official Image: https://hub.docker.com/r/linuxserver/duckdns Custom Github Page: https://github.com/vttc08/docker-duckdns-dynu
This is a docker container that automatically updates the public IPv4 address of the server every 5 minutes to dynamic DNS services Dynu and DuckDNS. It is the fork of Linuxserver DuckDNS container.
DYNU_HOST= # full name of dynu domains\nDYNU_PASS= # md5 hashed dynu login pass\nSUBDOMAINS= # DuckDNS domains without the duckdns.org part\nTOKEN= # DuckDNS token \n
token will be visible in DuckDNS dashboard
Dynu pass is the same as login; alternatively, it is possible to create a dedicated password just for IP update MD5 generator
echo -n \"password\" | md5sum\n
when setting the IP to 10.0.0.0 in Dynu update API, dynu will automatically update the IP address to the IP address making that request
docker restart duckdns will manually run IP update docker exec -it duckdns /app/debug.sh or other scripts, debug script will print out IP address of subdomains resolved by Cloudflare
"},{"location":"Docker%20Apps/epic-games-free-games/","title":"Epic Games Free Games","text":"
Change the name of the container to a friendly name. Restart unless stopped so it restart automatically.
Copy and Paste
The default json configuration is located at /home/karis/docker/epicgames or $HOME/docker/epicgames.
Fix Login Issue Using Cookies
https://store.epicgames.com/en-US/
Visit this site and make sure it\u2019s logged in.
Install this extension EditThisCookie https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg/related
Open the extension and change the url to epicgames.com/id as in screenshot below
Export the cookie
Go to $HOME/docker/epicgames and create a new file email@gmail.com-cookies.json
If the json file is already there, truncate it with \u2013size 0
Paste the cookie value to the json file
Restart container.
Update
docker pull charlocharlie/epicgames-freegames:latest\ndocker rm -f epicgames\ndocker images | grep epicgames\n# use docker rmi to remote the corresponding image \n# re run the epicgames docker run command\n
The first 3 bind mount are for configuration of filebrowser, eg. config, database and branding files. On first deployment, need to create an empty database.db file. The remaining bind mount are for the folders that need to be accessed, the folders should be bound under /srv.
The user and share management in filebrowser is simple. The shares have a expiring time, and can optionally have a password. The recipient can view and download files in the share but cannot upload.
To create a new user, it\u2019s under settings -> User Management, and add a user and password accordingly, and give appropriate permission. The scope is where the root folder where the user have access to, since the docker data folder is bound at /srv/docker and /srv is defined as root folder in config, the folder name to put in scopes would be /docker. Only one scope is allowed.
It is also possible to add rules to prevent user access of files within a scope. Under rules, enter the path that is relative to the scope, for example /docker/minecraft/config would be /config
Enable dark theme - Setting -> Global Settings -> Branding
also change the branding directory path to /branding which is bind mount in docker
Under the branding folder, create a file custom.csswhich is used for css customization. Then create a folder img and place logo.svg in it for custom icon. The icon is the same as egow entertainment and stored in OliveTin icon PSD file. Under the folder img, create a folder icons and use favicon generator site to create an icon archive and put all the content of that archive in the icons folder, the result should look like this.
Reverse Proxy/Homepage
Reverse proxy is normal procedure using NPM. To add bookmark to a file location, use browser/homepages bookmark function.
"},{"location":"Docker%20Apps/free-games-claimer/","title":"Free Games Claimer","text":"
https://github.com/vogler/free-games-claimer
This is the Github repo for the new and advanced free games claimer. This is implemented after Epicgames FreeGames keeps failing.
NOTIFY=discord://123456/ABCD if the webhook looks like this https://discord.com/api/webhooks/123456/ABCD
TIMEOUT=300 sets the timeout to 300s before the container skip and error out due to EpicGames captcha problems. However, the impact on prime gaming and GOG are not tested.
docker-compose.yml
services:\n free-games-claimer:\n container_name: FGC # is printed in front of every output line\n image: ghcr.io/vogler/free-games-claimer # otherwise image name will be free-games-claimer-free-games-claimer\n build: .\n ports:\n\n - \"5990:5900\" # VNC server\n - \"5890:6080\" # noVNC (browser-based VNC client)\n volumes:\n - ~/docker/fgc:/fgc/data\n - ~/docker/fgc/epic-games.js:/fgc/epic-games.js\n - ~/docker/fgc/prime-gaming.js:/fgc/prime-gaming.js\n - ~/docker/fgc/gog.js:/fgc/gog.js\n command: bash -c \"node epic-games; node prime-gaming; node gog; echo sleeping; sleep 1d\"\n env_file:\n - fgc.env\n restart: unless-stopped\n
This docker-compose file use the environment file fgc.env as indicated above and runs once every day. It also contains VNC server/web based client.
This should no longer be needed. Edit the line to epicgames.js code and replace with the following message. When the captcha is missed, it will send a notification for manual claiming.
wait notify(`epic-games: got captcha challenge right before claim. Use VNC to solve it manually. Game link: \\n ${url}`)\n
EpicGames require a captcha to claim free games. If the 5 minute timeout window for EpicGames is missed, it is no longer possible to claim the games unless waiting for the next day, which due to the nature of discord notifications, there is a slim to none chance of catching the captcha at next day. To continuing claiming after acknowledging the missed session, use portainer, ConnectBot Android to temporarily restart the container to restore VNC session.
In order to restore the default time of claiming the games. Eg. waking up on Thurs or Fri and a predictable time and claim games, use the linux at command. Need to install at using apt.
at 9:20\n> docker restart FGC\n> <EOT>\n
This will run the command at 9:20 AM the next day. Ctrl-D to exit at prompt and verify the time is correct.
At least for apps from jlesage, it supports an environment variable. Create an environment file called vnc.env
The environment file can be reference in many docker images from jlesage using docker-compose. The current environment variable specify U/GID, time zone and make every app dark mode. It is also possible to set VNC passwords. This is the full list of environment variables.
The jlesage apps have 2 ports, port 5800 for viewing the VNC app on a web browser on desktop; port 5900 is for VNC protocol that can be used in dedicated VNC viewer or mobile viewing.
The appdata bind mount is located in the ~/docker/vnc, as seen from the yml example, the vnc environment file vnc.env is placed in the appdata folder. For application requiring access to movie storage, the bind mount is on the corresponding hard drive or pool. As for applications requiring access to storage but not large media, it\u2019s best to put the files on a SSD.
This is an example of VNC container of MKVToolNix. The vnc.yml file is backed up elsewhere.
The application port start from 5800/5900 for its corresponding access and add 10 for each application.
JDownloader: 5800
Firefox: 5810
MKVToolNix: 5820
MKVCleaver: 5840
MegaBasterd: 5860 (no VNC viewer 59xx port)
There are also some application specific setup. For applications accessing hard drive or intensive apps, it is best to stop when not used. Lazytainer and ContainerNursery and possibly using DNS server can help automate this process.
This downloads the latest version of Minecraft, to use another PaperMC version, need to build the image from scratch.
Warning: PaperMC cannot be downgraded, only newerversion of PaperMC can be installed after first run.
git clone https://github.com/mtoensing/Docker-Minecraft-PaperMC-Server\n# go edit the \"ARG version=1.xx.x\" to the correct version\ndocker build -t marctv/mcserver:1.xx.x\n
Folders and Plugins
Plugins are located in folder ./plugins some plugins have .yml files. To update or download plugins, use scp, wget on the server or VSCode.
The world folder consists of the save data. It is separated into world, nether, the_end.
Before starting the server, the eula.txt must have eula=true.
bukkit and spigot.yml in the root folder are configuration files for PaperMC.
Rcon Commands
To access the rcon-cli, use docker attach mcserver, to exit, use Ctrl-P and Q, if using VSCode may need to edit keyboard shortcut.
Editing VSCode Shortcut
Press Ctrl-Shift-P and search for keyboard shortcut json.
ViaVersions - allow other similar version to join the server without conflict
Offline Mode/Mobile Bedrock
To allow offline play for PC version. Change server.properties and edit these lines
enforce-whitelist=false\nonline-mode=false\n
Refer to Minecraft Prep and Install to install offline client.
For bedrock compatibility, need the geyser plugin.
Geyser
To allows offline play for bedrock mobile version. Go to ./plugins/Geyser-Spigot/config.yml and change these lines. Do not install the plugin floodgate, if it\u2019s installed, removed the plugin. ViaVersions is also needed for mobile play.
Make sure the contents are in a separate folder. Follow naming like this. A cover image can also be created. The best bitrate should be under 128 kbps for smooth playback.
Mobile app also has download functionality, however, the directory cannot be changed, the default for download is /Internal Storage/Download/{Podcast or Audiobook}
The statistic of minutes listened is the actual minutes listened, not the minutes of audiobook progress listened (eg. playing at faster speed).
import os\nimport time\n\nprint(\"hello world\")\nif a=b:\n print(a)\nelif b=c:\n try:\n print(c)\n except:\n print(c+a)\nelse:\n print(\"what is the meaning of life\")\n
More sample media
Portainer is a software for managing docker containers.
"},{"location":"Docker%20Apps/Minecraft/minecraft-prep-and-install/","title":"Minecraft Prep and Install","text":"
Client Setup (Java + Online)
Download Java
Download OptiFine the latest version.
On the official Minecraft client, go add a new installation and match the version with OptiFine.
Download and try the official version, then install OptiFine with Java.
Under Settings -> Keep the Launcher open while games are running
Client Setup (Java + Offline)
Use the client PolyMC to enable offline play.
Go to the right corner, manage accounts and create an offline account.
Click on add an instance and follow the guide.
To install OptiFine, need the official launcher first, then download OptiFine
Extract OptiFine, the extracted file should be ending in _MOD.jar
Open the jar file in WinRAR, then move the files from notch folder into the base folder. Save the jar archive.
Go to PolyMC, right click on the instance, click Edit -> Versions -> Add to minecraft.jar and select the modified OptiFine.
This downloads the latest version of Minecraft, to use another PaperMC version, need to build the image from scratch.
Warning: PaperMC cannot be downgraded, only newer version of PaperMC can be installed after first run.
git clone https://github.com/mtoensing/Docker-Minecraft-PaperMC-Server\n# go edit the \"ARG version=1.xx.x\" to the correct version\ndocker build -t marctv/mcserver:1.xx.x\n
Folders and Plugins
Plugins are located in folder ./plugins some plugins have .yml files. To update or download plugins, use scp, wget on the server or VSCode.
The world folder consists of the save data. It is separated into world, nether, the_end.
Before starting the server, the eula.txt must have eula=true.
bukkit and spigot.yml in the root folder are configuration files for PaperMC.
Rcon Commands
To access the rcon-cli, use docker attach mcserver, to exit, use Ctrl-P and Q, if using VSCode may need to edit keyboard shortcut.
Editing VSCode Shortcut
Press Ctrl-Shift-P and search for keyboard shortcut json.
ViaVersions - allow other similar version to join the server without conflict
Offline Mode/Mobile Bedrock
To allow offline play for PC version. Change server.properties and edit these lines
enforce-whitelist=false\nonline-mode=false\n
Refer to Minecraft Prep and Install to install offline client.
For bedrock compatibility, need the geyser plugin.
Geyser
To allows offline play for bedrock mobile version. Go to ./plugins/Geyser-Spigot/config.yml and change these lines. Do not install the plugin floodgate, if it\u2019s installed, removed the plugin. ViaVersions is also needed for mobile play.
Save private key as ppk file on the root ssh folder.
If the client with private key is Linux machine, need to change the permission of the private key.
chmod 600 private.key\n
Convert the private key Conversion > Export OpenSSH Keys and save the file to a folder OpenSSH Keys
Setting Up SMB
Refer to Samba(SMB) Setup to setup SMB server.
Desktop Environment Setup
Firefox
The location of firefox profile is at /home/$USER/.mozilla/firefox/xxxxx.default
Make a tarball and copy it and extract it in destination.
In the profile folder, look for compatibility.ini, go to a random profile in the dest machine and copy the compatibility.ini settings to the one that is copied over. This ensure compatibility so that the new profile works without warning.
Check the profile.ini with the name and the location of the new profile folder, firefox should be the same as before.
OliveTin exposes a webpage with buttons that execute shell command (eg. docker, scripts) on the server and allow others for easy access. It should be used internally only.
Installation
Download the correct file from this site. https://github.com/OliveTin/OliveTin/releases OliveTin_linux_amd64.deb
The configuration file is located at <em>/etc/OliveTin/config.yaml\u00a0</em>
Example Configuration
listenAddressSingleHTTPFrontend: 0.0.0.0:1378 # set the port of OliveTin to 1378\n\n# Choose from INFO (default), WARN and DEBUG\nlogLevel: \"INFO\"\n\n# Actions (buttons) to show up on the WebUI:\nactions:\n # This will run a simple script that you create.\n\n- title: Update Music\n shell: /home/karis/scripts/script\n icon: '🎵'\n
More possible configurations (many are not possible on Docker)
This example give choices to start or stop a docker stack of a docker-compose file. If a argument is given the parameter choices, it will be in dropdown mode.
The icons need to be placed in a folder in /var/www/[icon-folder]/icon.png. To use the icons, offline image or web address, it should be in HTML format. The size of 48px is the default size of OliveTin icons. Other CSS options such as <em>style=\"background-color: white;\"</em> also works.
"},{"location":"Linux%20Server/sambasmb-setup/","title":"Samba(SMB) Setup","text":""},{"location":"Linux%20Server/sambasmb-setup/#setting-up-smb-server-on-linux","title":"Setting up SMB Server on Linux","text":"
nvme_share is the name of the Samba path which will appear in SMB clients and its path is accessed by \\\\192.168.0.1\\nvme_share
path is the location where the files are stored
browseable and read only are flags that are needed to make sure read/write access on the SMB share
Lastly, add the user and password for the SMB share
sudo smbpasswd -a $USER # enter the password twice\n
In the case when Windows fail to write files in the samba share for odd reason. Go to Manage Credentials -> Windows Credentials -> Add a Windows Credential and fill the necessary address, username and password.
"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#recent-updates","title":"Recent Updates","text":"
01 Docker Infrastructure
JDownloader
OliveTin
Samba(SMB) Setup
Dynamic DNS Updater Docker
Filebrowser
Mkdocs
Debian-Based Server Setup
Tunneling Basic Services (Jellyfin, Web) with Caddy and Tailscale
yaml highlighting is broken with mdx-breakless-lists
when using heading #, if there are no line breaks between headings, any lists that is after content of the second heading will not be rendered properly, even with mdx-breakless-lists
when referencing a subheading in another file, mkdocs uses [](file.md#heading-with-space) while obsidian uses [](file.md#heading%20with%20space)
Before switching from lists to normal content, a line break is needed, otherwise the text below will be rendered with a indent
mkdocs subheadings [](#subheadings) must be in lower case
Fancy Buttons mkdocs [button text](link.md){ .md-button } Tooltip I\u2019m a tooltip that you can hover or click. [tooltip](https://link \"hover text\") Annotation I\u2019m an annotation, but you need to click the plus icon (1) to show. (2)
annotation 1
annotation 2
Annotation location 1 (1), location (2)\n{ .annotate }\n1. annotation text to be shown\n
Footnote Insert footnote like [^1]1
for inserting footnote [^1]
[^1]: at the end to explain the footnote; not supported in obsidian
from python import python\npython.run(arg1=123, arg2=\"mystr\")[2]\n
#!/bin/bash\nvar=\"myvar\"\necho $var+3\n
# yaml highlighting has to be `yaml` not `yml` and it's broken\n---\nversion: \"2.1\"\nservices:\n clarkson:\n image: lscr.io/linuxserver/clarkson\n container_name: clarkson\n environment:\n\n - PUID=1000\n - PGID=1000\n ports:\n - 3000:3000\n restart: unless-stopped\n
explaining the footnote.\u00a0\u21a9
"},{"location":"Cloud%20VPS/basic-server-setup-caddy-docker-jdownloader/","title":"Basic Server Setup, Caddy, Docker, JDownloader","text":"
Creating the VM in oracle cloud.
Go to instances, new instance.
Select the Always Free image, ARM or x86. 1 core only, recommended 4GB RAM, should be exceed 6 GB.
Choose Ubuntu image.
Download the SSH key and name it accordingly.
Key Pair
Using PuttyGen.
Place the key in ./ssh/openssh_keys
Open PuttyGen, conversion -> import keys
Save the key files as ppk file in root folder of ./ssh
Putty
Grab the IP address in the cloud console
Give a name in saved sessions
Go to behavior, choose these options
Under Data, make sure Terminal-type string is xterm-256color
Under Terminal -> Features, check \u201cdisable application keypad mode\u201d to fix issues with nano
The private key needs to be load in Connection -> SSH -> Auth -> Credentials
To get the IP address of the VPS at any time
curl ifconfig.me\n
Basic Setup + Docker
Installing Caddy web server (simple to use reverse proxy), lightweight, easy and no need for docker. (Nginx is also a good candidate for reverse proxy as the command is easy to memorize and does not require consulting documentation sites. However, the syntax for nginx is extremely complex compared to caddy and might not be easily memorized.
For firewall-cmd, use this command to check all open ports.
sudo firewall-cmd --list-all\n
Using netstat, or pipe it to grep
netstat -tln\n# | grep 8080 etc...\n
Configuring JDownloader
Go to the JDownloader WebUI
Go to Settings
Under general, change the max number of downloads (2) and DL per hoster (1) to minimize issues
Go to MyJDownloader and configure MyJDownloader account
Go to extension modules, install and enable \u201cfolderwatch\u201d
The configuration for JDownloader is complete and should appear and be functional in WebUI. Advanced JDownloader documentation will be covered in detailed in another section. It is recommended to close port 5800 after configuring to prevent others accessing.
Basic Caddy Syntax (if applicable)
If the server that is being setup or restored needs functional service like bookstack or uptime-kuma, reverse proxy is needed.
basically, change all the black values to white when searching for color fore, change everything except blue colors and error color
Enabled Text Color, Speed Meter Text, Speed Meter Average Text, Config Panel Description Text, Config Header Text Color - #ffffffff
Disabled Text Color - #ff666666
basically, when searching for color text, change all to white except for disabled text
"},{"location":"Cloud%20VPS/tunneling-basic-services-jellyfin-web-with-caddy-and-tailscale/","title":"Tunneling Basic Services (Jellyfin, Web) with Caddy and Tailscale","text":"
This procedure is not reproducible yet. Rigorous testing is still required before being documented. Here are the known procedures.
The purpose is to tunnel normal web or network intensive traffic such as Jellyfin when faced with CG-NAT or similar situations (in this case locked down dorm internet), also configure hardware transcoding (in this case NVENC, but Intel QSV for future) to mitigate limitations with Canadian ISP(s).
It is possible to set use the root domain (yoursub.duckdns.org) or a subfolder domain (movies.yousub.duckdns.org) for Jellyfin. After configuring the Caddyfile.
sudo systemctl reload caddy\n
Use netstat to check port 80, 443 is being listened. Make sure to port forward Oracle VPS.
Other Services
Follow the same syntax as the caddy file provided, if the root domain is used, then a subdomain must be used for other services.
Results
Inconclusive yet, more testing required.
"},{"location":"Cloud%20VPS/tunneling-minecraft-server-tcp-only-with-nginx/","title":"Tunneling Minecraft Server (tcp only) with Nginx","text":"
Procedure not reproducible yet, will be documented later.
This will run demucs with CUDA GPU acceleration, make sure to put the path in double quote. The extracted file will be found in the directory where you run the command eg. the default Anaconda prompt starts in ~/separated
All docker-compose.yml files are stored in ~/docker folder, which then by default is under the network docker_default.
by default for newly created apps, a new folder is created and docker-compose.yml is created for that app for testing
once app testing is complete, the compose file can be moved docker root folder if appropriate or remain
some apps can be grouped together and these compose files are in the root docker folder such as media.yml, network.yml, the grouping allows multiple services to be managed by a single compose. For grouping, some of the property can include
the apps share common properties such as arrs apps
it is preferable for apps to live in same network, eg. teslamate
a large app requiring multiple containers eg. frontend, mysql etc..
apps share similar/same category, such as qBittorrent and nzbget can be put together in downloader.yml even though they do not have common properties or require same networking
The storage used for all containers are bind mount.
application configs are stored in ~/docker/[app]
if an app has multiple components needing persistence (eg. app with database, helpers), a folder will be created as such ~/docker/[app]/postgres etc.
apps that also store non-config data (such as music, documents etc.) and not using a lot of space can bind mount /mnt/nvme/share (a directory on local or another SSD) for fast data access and without spinning up HDD
exceptions are home assistant or its related home automation containers and these are stored at /srv/homeassistant
The entire docker root folder is copied to a NFS share on another computer. With exception of minecraft and home assistant which a specialized method is used.
With docker-compose, a new network is created with the name of folder the compose is located, while it\u2019s possible to change network, it is not straightforward, therefore, there is no points in manually defining networks unless required.
Public 172.80.0.0/16 - bridge network for public facing applications with reverse proxy, this way when configuring Nginx Proxy Manager, all it need is to enter container_name:80 rather than IP address.
Nginx Proxy Manager - 172.80.44.3
Other containers will use docker DHCP to get address
Containers that need to public facing can attach to this network Media 172.96.0.0/16 - bridge network for arrs, downloader and management applications for easy interconnection when configuring Minecraft 172.255.255.0/24 - bridge network for Minecraft related networks
Media Apps - apps related to media acquisition, curation and other functions services for Jellyfin Networking - reverse proxy, DNS, VPN and related services Home Automation - home assistant and its associated functions VNC - containers based on jlesage-vnc-apps or Linuxserver Kasm images, usually desktop apps run in a browser via noVNC Management - tools for managing docker containers or entire server Games - game servers and associated tools Filesharing - apps that share files to other clients Documentation - notes and operation procedures for server infrastructure Authentication - services that handle single sign-on (SSO) with users
Notice: In Oracle cloud free tier, the default ubuntu user is 1001, not 1000. For database name, it it bookstackapp, keep in mind when executing restore command. The folder structure is also different. In the solidnerd container, the images are stored at /public-uploads while in LSIO container it is stored at /www/uploads
"},{"location":"Docker%20Apps/bookstack/#backing-up-from-home-pc","title":"Backing Up (from home PC)","text":"
Make sure to copy the oracle-arm-2.key to the appropriate location (~/docker/bookstack/public-uploads)
Also make sure the permission of oracle-arm-2.key is in correct permission (600). Especially changing the permission of public-uploads folder to allow write access.
Do a backup sequence in crontab at 11pm every Tuesday and Friday.
Oracle Cloud Server
0 8 * * 3,6 /home/ubuntu/bookstack.sh\n
#!/bin/bash\n\ncd ~/bookstack/www/uploads #directory where bookstack files scp from home are located\ntar -xvzf images.tar.gz\nsed -i 's/wiki.$homeip.duckdns.org/wiki.$oracle.duckdns.org/g' bookstack_db.sql\nsudo docker exec -i bookstack_db mysql -u root --password=secret bookstackapp < /home/ubuntu/bookstack/www/uploads/bookstack_db.sql\n
Restore the sequence after backup, every Wednesday and Saturday at 8am (need to consider the TZ between Vancouver, Edmonton and Toronto, or any the time zone of the remote server)
"},{"location":"Docker%20Apps/ddns-update/","title":"Dynamic DNS Updater Docker","text":"
Official Image: https://hub.docker.com/r/linuxserver/duckdns Custom Github Page: https://github.com/vttc08/docker-duckdns-dynu
This is a docker container that automatically updates the public IPv4 address of the server every 5 minutes to dynamic DNS services Dynu and DuckDNS. It is the fork of Linuxserver DuckDNS container.
DYNU_HOST= # full name of dynu domains\nDYNU_PASS= # md5 hashed dynu login pass\nSUBDOMAINS= # DuckDNS domains without the duckdns.org part\nTOKEN= # DuckDNS token \n
token will be visible in DuckDNS dashboard
Dynu pass is the same as login; alternatively, it is possible to create a dedicated password just for IP update MD5 generator
echo -n \"password\" | md5sum\n
when setting the IP to 10.0.0.0 in Dynu update API, dynu will automatically update the IP address to the IP address making that request
docker restart duckdns will manually run IP update docker exec -it duckdns /app/debug.sh or other scripts, debug script will print out IP address of subdomains resolved by Cloudflare
"},{"location":"Docker%20Apps/epic-games-free-games/","title":"Epic Games Free Games","text":"
Change the name of the container to a friendly name. Restart unless stopped so it restart automatically.
Copy and Paste
The default json configuration is located at /home/karis/docker/epicgames or $HOME/docker/epicgames.
Fix Login Issue Using Cookies
https://store.epicgames.com/en-US/
Visit this site and make sure it\u2019s logged in.
Install this extension EditThisCookie https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg/related
Open the extension and change the url to epicgames.com/id as in screenshot below
Export the cookie
Go to $HOME/docker/epicgames and create a new file email@gmail.com-cookies.json
If the json file is already there, truncate it with \u2013size 0
Paste the cookie value to the json file
Restart container.
Update
docker pull charlocharlie/epicgames-freegames:latest\ndocker rm -f epicgames\ndocker images | grep epicgames\n# use docker rmi to remote the corresponding image \n# re run the epicgames docker run command\n
The first 3 bind mount are for configuration of filebrowser, eg. config, database and branding files. On first deployment, need to create an empty database.db file. The remaining bind mount are for the folders that need to be accessed, the folders should be bound under /srv.
The user and share management in filebrowser is simple. The shares have a expiring time, and can optionally have a password. The recipient can view and download files in the share but cannot upload.
To create a new user, it\u2019s under settings -> User Management, and add a user and password accordingly, and give appropriate permission. The scope is where the root folder where the user have access to, since the docker data folder is bound at /srv/docker and /srv is defined as root folder in config, the folder name to put in scopes would be /docker. Only one scope is allowed.
It is also possible to add rules to prevent user access of files within a scope. Under rules, enter the path that is relative to the scope, for example /docker/minecraft/config would be /config
Enable dark theme - Setting -> Global Settings -> Branding
also change the branding directory path to /branding which is bind mount in docker
Under the branding folder, create a file custom.csswhich is used for css customization. Then create a folder img and place logo.svg in it for custom icon. The icon is the same as egow entertainment and stored in OliveTin icon PSD file. Under the folder img, create a folder icons and use favicon generator site to create an icon archive and put all the content of that archive in the icons folder, the result should look like this.
Reverse Proxy/Homepage
Reverse proxy is normal procedure using NPM. To add bookmark to a file location, use browser/homepages bookmark function.
"},{"location":"Docker%20Apps/free-games-claimer/","title":"Free Games Claimer","text":"
https://github.com/vogler/free-games-claimer
This is the Github repo for the new and advanced free games claimer. This is implemented after Epicgames FreeGames keeps failing.
NOTIFY=discord://123456/ABCD if the webhook looks like this https://discord.com/api/webhooks/123456/ABCD
TIMEOUT=300 sets the timeout to 300s before the container skip and error out due to EpicGames captcha problems. However, the impact on prime gaming and GOG are not tested.
docker-compose.yml
services:\n free-games-claimer:\n container_name: FGC # is printed in front of every output line\n image: ghcr.io/vogler/free-games-claimer # otherwise image name will be free-games-claimer-free-games-claimer\n build: .\n ports:\n\n - \"5990:5900\" # VNC server\n - \"5890:6080\" # noVNC (browser-based VNC client)\n volumes:\n - ~/docker/fgc:/fgc/data\n - ~/docker/fgc/epic-games.js:/fgc/epic-games.js\n - ~/docker/fgc/prime-gaming.js:/fgc/prime-gaming.js\n - ~/docker/fgc/gog.js:/fgc/gog.js\n command: bash -c \"node epic-games; node prime-gaming; node gog; echo sleeping; sleep 1d\"\n env_file:\n - fgc.env\n restart: unless-stopped\n
This docker-compose file use the environment file fgc.env as indicated above and runs once every day. It also contains VNC server/web based client.
This should no longer be needed. Edit the line to epicgames.js code and replace with the following message. When the captcha is missed, it will send a notification for manual claiming.
wait notify(`epic-games: got captcha challenge right before claim. Use VNC to solve it manually. Game link: \\n ${url}`)\n
EpicGames require a captcha to claim free games. If the 5 minute timeout window for EpicGames is missed, it is no longer possible to claim the games unless waiting for the next day, which due to the nature of discord notifications, there is a slim to none chance of catching the captcha at next day. To continuing claiming after acknowledging the missed session, use portainer, ConnectBot Android to temporarily restart the container to restore VNC session.
In order to restore the default time of claiming the games. Eg. waking up on Thurs or Fri and a predictable time and claim games, use the linux at command. Need to install at using apt.
at 9:20\n> docker restart FGC\n> <EOT>\n
This will run the command at 9:20 AM the next day. Ctrl-D to exit at prompt and verify the time is correct.
At least for apps from jlesage, it supports an environment variable. Create an environment file called vnc.env
The environment file can be reference in many docker images from jlesage using docker-compose. The current environment variable specify U/GID, time zone and make every app dark mode. It is also possible to set VNC passwords. This is the full list of environment variables.
The jlesage apps have 2 ports, port 5800 for viewing the VNC app on a web browser on desktop; port 5900 is for VNC protocol that can be used in dedicated VNC viewer or mobile viewing.
The appdata bind mount is located in the ~/docker/vnc, as seen from the yml example, the vnc environment file vnc.env is placed in the appdata folder. For application requiring access to movie storage, the bind mount is on the corresponding hard drive or pool. As for applications requiring access to storage but not large media, it\u2019s best to put the files on a SSD.
This is an example of VNC container of MKVToolNix. The vnc.yml file is backed up elsewhere.
The application port start from 5800/5900 for its corresponding access and add 10 for each application.
JDownloader: 5800
Firefox: 5810
MKVToolNix: 5820
MKVCleaver: 5840
MegaBasterd: 5860 (no VNC viewer 59xx port)
There are also some application specific setup. For applications accessing hard drive or intensive apps, it is best to stop when not used. Lazytainer and ContainerNursery and possibly using DNS server can help automate this process.
This downloads the latest version of Minecraft, to use another PaperMC version, need to build the image from scratch.
Warning: PaperMC cannot be downgraded, only newerversion of PaperMC can be installed after first run.
git clone https://github.com/mtoensing/Docker-Minecraft-PaperMC-Server\n# go edit the \"ARG version=1.xx.x\" to the correct version\ndocker build -t marctv/mcserver:1.xx.x\n
Folders and Plugins
Plugins are located in folder ./plugins some plugins have .yml files. To update or download plugins, use scp, wget on the server or VSCode.
The world folder consists of the save data. It is separated into world, nether, the_end.
Before starting the server, the eula.txt must have eula=true.
bukkit and spigot.yml in the root folder are configuration files for PaperMC.
Rcon Commands
To access the rcon-cli, use docker attach mcserver, to exit, use Ctrl-P and Q, if using VSCode may need to edit keyboard shortcut.
Editing VSCode Shortcut
Press Ctrl-Shift-P and search for keyboard shortcut json.
ViaVersions - allow other similar version to join the server without conflict
Offline Mode/Mobile Bedrock
To allow offline play for PC version. Change server.properties and edit these lines
enforce-whitelist=false\nonline-mode=false\n
Refer to Minecraft Prep and Install to install offline client.
For bedrock compatibility, need the geyser plugin.
Geyser
To allows offline play for bedrock mobile version. Go to ./plugins/Geyser-Spigot/config.yml and change these lines. Do not install the plugin floodgate, if it\u2019s installed, removed the plugin. ViaVersions is also needed for mobile play.
Make sure the contents are in a separate folder. Follow naming like this. A cover image can also be created. The best bitrate should be under 128 kbps for smooth playback.
Mobile app also has download functionality, however, the directory cannot be changed, the default for download is /Internal Storage/Download/{Podcast or Audiobook}
The statistic of minutes listened is the actual minutes listened, not the minutes of audiobook progress listened (eg. playing at faster speed).
import os\nimport time\n\nprint(\"hello world\")\nif a=b:\n print(a)\nelif b=c:\n try:\n print(c)\n except:\n print(c+a)\nelse:\n print(\"what is the meaning of life\")\n
More sample media
Portainer is a software for managing docker containers.
"},{"location":"Docker%20Apps/Minecraft/minecraft-prep-and-install/","title":"Minecraft Prep and Install","text":"
Client Setup (Java + Online)
Download Java
Download OptiFine the latest version.
On the official Minecraft client, go add a new installation and match the version with OptiFine.
Download and try the official version, then install OptiFine with Java.
Under Settings -> Keep the Launcher open while games are running
Client Setup (Java + Offline)
Use the client PolyMC to enable offline play.
Go to the right corner, manage accounts and create an offline account.
Click on add an instance and follow the guide.
To install OptiFine, need the official launcher first, then download OptiFine
Extract OptiFine, the extracted file should be ending in _MOD.jar
Open the jar file in WinRAR, then move the files from notch folder into the base folder. Save the jar archive.
Go to PolyMC, right click on the instance, click Edit -> Versions -> Add to minecraft.jar and select the modified OptiFine.
This downloads the latest version of Minecraft, to use another PaperMC version, need to build the image from scratch.
Warning: PaperMC cannot be downgraded, only newer version of PaperMC can be installed after first run.
git clone https://github.com/mtoensing/Docker-Minecraft-PaperMC-Server\n# go edit the \"ARG version=1.xx.x\" to the correct version\ndocker build -t marctv/mcserver:1.xx.x\n
Folders and Plugins
Plugins are located in folder ./plugins some plugins have .yml files. To update or download plugins, use scp, wget on the server or VSCode.
The world folder consists of the save data. It is separated into world, nether, the_end.
Before starting the server, the eula.txt must have eula=true.
bukkit and spigot.yml in the root folder are configuration files for PaperMC.
Rcon Commands
To access the rcon-cli, use docker attach mcserver, to exit, use Ctrl-P and Q, if using VSCode may need to edit keyboard shortcut.
Editing VSCode Shortcut
Press Ctrl-Shift-P and search for keyboard shortcut json.
ViaVersions - allow other similar version to join the server without conflict
Offline Mode/Mobile Bedrock
To allow offline play for PC version. Change server.properties and edit these lines
enforce-whitelist=false\nonline-mode=false\n
Refer to Minecraft Prep and Install to install offline client.
For bedrock compatibility, need the geyser plugin.
Geyser
To allows offline play for bedrock mobile version. Go to ./plugins/Geyser-Spigot/config.yml and change these lines. Do not install the plugin floodgate, if it\u2019s installed, removed the plugin. ViaVersions is also needed for mobile play.
Save private key as ppk file on the root ssh folder.
If the client with private key is Linux machine, need to change the permission of the private key.
chmod 600 private.key\n
Convert the private key Conversion > Export OpenSSH Keys and save the file to a folder OpenSSH Keys
Setting Up SMB
Refer to Samba(SMB) Setup to setup SMB server.
Desktop Environment Setup
Firefox
The location of firefox profile is at /home/$USER/.mozilla/firefox/xxxxx.default
Make a tarball and copy it and extract it in destination.
In the profile folder, look for compatibility.ini, go to a random profile in the dest machine and copy the compatibility.ini settings to the one that is copied over. This ensure compatibility so that the new profile works without warning.
Check the profile.ini with the name and the location of the new profile folder, firefox should be the same as before.
OliveTin exposes a webpage with buttons that execute shell command (eg. docker, scripts) on the server and allow others for easy access. It should be used internally only.
Installation
Download the correct file from this site. https://github.com/OliveTin/OliveTin/releases OliveTin_linux_amd64.deb
The configuration file is located at <em>/etc/OliveTin/config.yaml\u00a0</em>
Example Configuration
listenAddressSingleHTTPFrontend: 0.0.0.0:1378 # set the port of OliveTin to 1378\n\n# Choose from INFO (default), WARN and DEBUG\nlogLevel: \"INFO\"\n\n# Actions (buttons) to show up on the WebUI:\nactions:\n # This will run a simple script that you create.\n\n- title: Update Music\n shell: /home/karis/scripts/script\n icon: '🎵'\n
More possible configurations (many are not possible on Docker)
This example give choices to start or stop a docker stack of a docker-compose file. If a argument is given the parameter choices, it will be in dropdown mode.
The icons need to be placed in a folder in /var/www/[icon-folder]/icon.png. To use the icons, offline image or web address, it should be in HTML format. The size of 48px is the default size of OliveTin icons. Other CSS options such as <em>style=\"background-color: white;\"</em> also works.
"},{"location":"Linux%20Server/sambasmb-setup/","title":"Samba(SMB) Setup","text":""},{"location":"Linux%20Server/sambasmb-setup/#setting-up-smb-server-on-linux","title":"Setting up SMB Server on Linux","text":"
nvme_share is the name of the Samba path which will appear in SMB clients and its path is accessed by \\\\192.168.0.1\\nvme_share
path is the location where the files are stored
browseable and read only are flags that are needed to make sure read/write access on the SMB share
Lastly, add the user and password for the SMB share
sudo smbpasswd -a $USER # enter the password twice\n
In the case when Windows fail to write files in the samba share for odd reason. Go to Manage Credentials -> Windows Credentials -> Add a Windows Credential and fill the necessary address, username and password.