2021-01-03 22:54:40 +01:00
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2021-02-10 18:02:02 +01:00
<!-- 2021 - 02 - 10 mer. 17:57 -->
2021-01-03 22:54:40 +01:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Home Server< / title >
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
< link rel = "stylesheet" type = "text/css" href = "./dist/style.css" / >
< script type = "text/javascript" src = "./dist/script.js" > < / script >
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "./index.html" > UP < / a >
|
< a accesskey = "H" href = "./index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Home Server< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
< li > < a href = "#org1f7afb5" > Installation< / a >
< ul >
< li > < a href = "#orgb93bb73" > Hardware< / a > < / li >
< li > < a href = "#orgcd06b2a" > Ubuntu< / a > < / li >
< li > < a href = "#orgbc4de87" > Install Important software< / a > < / li >
< li > < a href = "#org5a59bf0" > Terminal Problem< / a > < / li >
< li > < a href = "#org9b7e434" > Minor Modifications of < code > ~/.inputrc< / code > < / a > < / li >
< li > < a href = "#orgf50ccc2" > Partition and Format Disk Drives< / a > < / li >
< li > < a href = "#orgf64f7a4" > MergerFS and FStab< / a > < / li >
< li > < a href = "#orgb67aa33" > Automating with SnapRAID Runner< / a > < / li >
< li > < a href = "#org1d4a03b" > Install Docker< / a > < / li >
< li > < a href = "#org1f7f7d7" > Executing the Docker Command Without Sudo< / a > < / li >
< li > < a href = "#org88013e8" > Install Docker-Compose< / a > < / li >
< li > < a href = "#orgd2ef096" > Setup Docker Networks< / a > < / li >
< li > < a href = "#orgefaaeb5" > Change Timezone< / a > < / li >
< li > < a href = "#org28378b4" > Secure the Web Server< / a > < / li >
< li > < a href = "#orgd02e736" > Automatic Security Updates< / a > < / li >
< li > < a href = "#orga975f26" > Setup cronjobs< / a > < / li >
< li > < a href = "#orgcb0d234" > Run < code > docker-compose< / code > < / a > < / li >
< / ul >
< / li >
< li > < a href = "#orge39332b" > Maintenance - How To< / a >
< ul >
< li > < a href = "#orgab9cc12" > Update System/Packages< / a > < / li >
< li > < a href = "#orgbd671d1" > Docker Commands< / a > < / li >
< li > < a href = "#orgc233df6" > Add User and Password for Basic Authentication< / a > < / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org33e06c1" > Snapraid< / a > < / li >
2021-01-03 22:54:40 +01:00
< li > < a href = "#orged978b5" > Restore Online backup with < code > restic< / code > < / a > < / li >
< / ul >
< / li >
< li > < a href = "#orga8d1885" > Docker-Compose< / a >
< ul >
< li > < a href = "#orgff78ad6" > Networks< / a > < / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org9442cd9" > < code > traefik< / code > - Application proxy< / a > < / li >
< li > < a href = "#org682fd4a" > < code > homer< / code > - Home page< / a >
2021-01-08 01:43:48 +01:00
< ul >
< li > < a href = "#org66a172e" > < code > config.yml< / code > < / a > < / li >
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org7d77805" > < code > restic< / code > - Automatic online backups< / a >
2021-01-08 01:43:48 +01:00
< ul >
< li > < a href = "#orgb2219b0" > < code > rclone.conf< / code > < / a > < / li >
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#orgba8c1aa" > < code > snapraid< / code > - Manage local backup with parity disk< / a >
2021-01-08 01:43:48 +01:00
< ul >
< li > < a href = "#org243fb45" > < code > snapraid.conf< / code > < / a > < / li >
< li > < a href = "#orgf79de7e" > < code > snapraid-runner.conf< / code > < / a > < / li >
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org1646b45" > < code > portainer< / code > - Manage docker< / a > < / li >
< li > < a href = "#org42336f6" > < code > wireguard< / code > - VPN< / a > < / li >
< li > < a href = "#org3bffa6e" > < code > gitea< / code > - Git server< / a > < / li >
< li > < a href = "#org5079d4d" > < code > caddy< / code > - Research Pages< / a >
2021-01-08 01:43:48 +01:00
< ul >
2021-02-10 18:02:02 +01:00
< li > < a href = "#orgefebb52" > < code > Caddyfile< / code > < / a > < / li >
2021-01-08 01:43:48 +01:00
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org561b908" > < code > caddy< / code > - Dotfiles< / a >
2021-01-11 14:50:37 +01:00
< ul >
2021-02-10 18:02:02 +01:00
< li > < a href = "#orgcb02743" > < code > Caddyfile< / code > < / a > < / li >
2021-01-11 14:50:37 +01:00
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org361b49e" > < code > hugo< / code > - Wiki + Blog< / a > < / li >
< li > < a href = "#orgeea56a9" > < code > syncthing< / code > - File Synchronization< / a > < / li >
< li > < a href = "#org061c36c" > < code > miniflux< / code > - RSS reader< / a > < / li >
< li > < a href = "#org51bdaa4" > < code > homeassistant< / code > - Home Automation< / a > < / li >
< li > < a href = "#org675a101" > < code > jellyfin< / code > - Media server< / a > < / li >
< li > < a href = "#orga8dc1e3" > < code > filebrowser< / code > - Web file browser< / a >
2021-01-08 01:43:48 +01:00
< ul >
< li > < a href = "#org191aab8" > < code > .filebrowser.json< / code > < / a > < / li >
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org3a5502c" > < code > scrutiny< / code > - Hard drive monitoring< / a > < / li >
< li > < a href = "#org105492e" > < code > guacamole< / code > - Remote connection< / a > < / li >
< li > < a href = "#org12e136c" > < code > transmission< / code > - Torrent server< / a > < / li >
< li > < a href = "#orgceb876c" > < code > aria2< / code > - Download daemon< / a >
2021-01-08 01:43:48 +01:00
< ul >
< li > < a href = "#orgaafd6da" > < code > aria2.conf< / code > < / a > < / li >
< / ul >
< / li >
2021-02-10 18:02:02 +01:00
< li > < a href = "#org759769e" > < code > aria2-ui< / code > - Download web UI< / a > < / li >
< li > < a href = "#orgdb3057e" > < code > deemix< / code > - Music Download< / a >
< ul >
< li > < a href = "#orgc2325d9" > < code > .arl< / code > < / a > < / li >
< / ul >
< / li >
< li > < a href = "#org98dce20" > < code > linkding< / code > - Bookmark manager< / a > < / li >
2021-01-03 22:54:40 +01:00
< / ul >
< / li >
< li > < a href = "#orgbb869cd" > < code > .env< / code > - Variable used for Docker Compose< / a > < / li >
< li > < a href = "#orgf0182df" > Cron Jobs< / a >
< ul >
< li > < a href = "#org34f5942" > Caddy Update< / a > < / li >
< / ul >
< / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-org1f7afb5" class = "outline-2" >
< h2 id = "org1f7afb5" > Installation< / h2 >
< div class = "outline-text-2" id = "text-org1f7afb5" >
< / div >
< div id = "outline-container-orgb93bb73" class = "outline-3" >
< h3 id = "orgb93bb73" > Hardware< / h3 >
< div class = "outline-text-3" id = "text-orgb93bb73" >
2021-01-08 01:43:48 +01:00
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2021-01-03 22:54:40 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Home Server Hardware< / caption >
< colgroup >
< col class = "org-left" / >
< col class = "org-left" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-left" > < b > Part< / b > < / th >
< th scope = "col" class = "org-left" > < b > Model< / b > < / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-left" > Case< / td >
< td class = "org-left" > Fractal Design Node 804< / td >
< / tr >
< tr >
< td class = "org-left" > Motherboard< / td >
< td class = "org-left" > ASUS PRIME B450M-A< / td >
< / tr >
< tr >
< td class = "org-left" > CPU< / td >
< td class = "org-left" > AMD Ryzen 3 3200G< / td >
< / tr >
< tr >
< td class = "org-left" > RAM< / td >
< td class = "org-left" > Corsair Vengeance LPX 16Go (2x8Go) DDR4 3200MHz< / td >
< / tr >
< tr >
< td class = "org-left" > Cooler< / td >
< td class = "org-left" > ARCTIC Freezer 34 eSports DUO< / td >
< / tr >
< tr >
< td class = "org-left" > PSU< / td >
< td class = "org-left" > Corsair SF450< / td >
< / tr >
< tr >
< td class = "org-left" > SSD M.2< / td >
< td class = "org-left" > Samsung 970 EVO Plus 250Gb< / td >
< / tr >
< tr >
< td class = "org-left" > Disk Drives< / td >
< td class = "org-left" > Various drives ranging from 3Tb to 8Tb< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< div id = "outline-container-orgcd06b2a" class = "outline-3" >
< h3 id = "orgcd06b2a" > Ubuntu< / h3 >
< div class = "outline-text-3" id = "text-orgcd06b2a" >
< ul class = "org-ul" >
< li > Download < b > Ubuntu Server 20.04 LTS< / b > (< a href = "https://ubuntu.com/download/server" > link< / a > ).< / li >
< li > Activate OpenSSH and add SSH Keys< / li >
< li > Account: < code > thomas< / code > , hostname: < code > homelab< / code > < / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-orgbc4de87" class = "outline-3" >
< h3 id = "orgbc4de87" > Install Important software< / h3 >
< div class = "outline-text-3" id = "text-orgbc4de87" >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > apt install neovim tmux fd-find ripgrep apache2-utils unrar ranger fzf stow
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org5a59bf0" class = "outline-3" >
< h3 id = "org5a59bf0" > Terminal Problem< / h3 >
< div class = "outline-text-3" id = "text-org5a59bf0" >
< p >
On the local host, using Termite:
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > infocmp > termite.terminfo < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > export Termite's Terminfo< / span >
scp termite.terminfo user@remote-host:~/ < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > or any other method to copy to the remote host< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
On the remote host, in the directory where you copied < code > termite.terminfo< / code > :
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > tic -x termite.terminfo < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > import Terminfo for current user< / span >
< span class = "org-type" > rm< / span > termite.terminfo < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > optional: remove Terminfo file< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org9b7e434" class = "outline-3" >
< h3 id = "org9b7e434" > Minor Modifications of < code > ~/.inputrc< / code > < / h3 >
< div class = "outline-text-3" id = "text-org9b7e434" >
< p >
Modify < code > ~/.inputrc< / code > , like so:
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-conf" > < span class = "org-string" > "\e[A"< / span > : history-search-backward < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > arrow up< / span >
< span class = "org-string" > "\e[B"< / span > : history-search-forward < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > arrow down< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgf50ccc2" class = "outline-3" >
< h3 id = "orgf50ccc2" > Partition and Format Disk Drives< / h3 >
< div class = "outline-text-3" id = "text-orgf50ccc2" >
< p >
A nice tutorial is available < a href = "https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-storage-devices-in-linux" > here< / a > .
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > lsblk
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > parted /dev/sda mklabel gpt
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > parted -a opt /dev/sda mkpart < span class = "org-string" > "partitionname"< / span > ext4 0% 100%
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > mkfs.ext4 -L partitionname /dev/sda1
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgf64f7a4" class = "outline-3" >
< h3 id = "orgf64f7a4" > MergerFS and FStab< / h3 >
< div class = "outline-text-3" id = "text-orgf64f7a4" >
< p >
< b > MergerFS< / b > is a transparent layer that sits on top of the data drives providing a single mount point for reads / writes (< a href = "https://selfhostedhome.com/combining-different-sized-drives-with-mergerfs-and-snapraid/" > link< / a > ).
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > apt install mergerfs
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Create mount points
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > < span class = "org-type" > mkdir< / span > /mnt/disk0
< span class = "org-type" > sudo< / span > < span class = "org-type" > mkdir< / span > /mnt/disk1
< span class = "org-type" > sudo< / span > < span class = "org-type" > mkdir< / span > /mnt/parity
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Create folder where disks will be merged.
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > < span class = "org-type" > mkdir< / span > /srv/storage
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Edit < code > /etc/fstab< / code > .
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-conf" > /dev/disk/by-uuid/7fb7873c-83bd-4805-98ab-506e6c7b56fa /mnt/disk0 ext4 defaults < span class = "org-highlight-numbers-number" > 0< / span > < span class = "org-highlight-numbers-number" > 0< / span >
/dev/disk/by-uuid/6574b7ae-321c-4078-9793-bc41a4fa5588 /mnt/disk1 ext4 defaults < span class = "org-highlight-numbers-number" > 0< / span > < span class = "org-highlight-numbers-number" > 0< / span >
/dev/disk/by-uuid/6fcd38b9-0886-46bd-900d-cb1f170dbcee /mnt/parity ext4 defaults < span class = "org-highlight-numbers-number" > 0< / span > < span class = "org-highlight-numbers-number" > 0< / span >
2021-01-03 22:54:40 +01:00
2021-01-08 01:45:55 +01:00
< span class = "org-variable-name" > /mnt/disk* /srv/storage fuse.mergerfs direct_io,defaults,allow_other,minfreespace< / span > =50G,fsname=mergerfs < span class = "org-highlight-numbers-number" > 0< / span > < span class = "org-highlight-numbers-number" > 0< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgb67aa33" class = "outline-3" >
< h3 id = "orgb67aa33" > Automating with SnapRAID Runner< / h3 >
< div class = "outline-text-3" id = "text-orgb67aa33" >
< p >
< b > SnapRAID< / b > is a snapshot parity calculation tool which acts at the block level independent of filesystem (< a href = "https://selfhostedhome.com/combining-different-sized-drives-with-mergerfs-and-snapraid/" > link< / a > ).
< / p >
< p >
SnapRAID is here used inside a Docker container (< a href = "https://hub.docker.com/r/xagaba/snapraid" > link< / a > ).
< / p >
< / div >
< / div >
< div id = "outline-container-org1d4a03b" class = "outline-3" >
< h3 id = "org1d4a03b" > Install Docker< / h3 >
< div class = "outline-text-3" id = "text-org1d4a03b" >
< p >
The procedure is well explained < a href = "https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04" > here< / a > .
< / p >
< p >
If docker is already installed, remove it:
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > apt remove docker
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org1f7f7d7" class = "outline-3" >
< h3 id = "org1f7f7d7" > Executing the Docker Command Without Sudo< / h3 >
< div class = "outline-text-3" id = "text-org1f7f7d7" >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > usermod -aG docker $< span class = "org-rainbow-delimiters-depth-1" > {< / span > < span class = "org-variable-name" > USER< / span > < span class = "org-rainbow-delimiters-depth-1" > }< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
To apply the new group membership, log out of the server and back in, or type the following:
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > su - $< span class = "org-rainbow-delimiters-depth-1" > {< / span > < span class = "org-variable-name" > USER< / span > < span class = "org-rainbow-delimiters-depth-1" > }< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org88013e8" class = "outline-3" >
< h3 id = "org88013e8" > Install Docker-Compose< / h3 >
< div class = "outline-text-3" id = "text-org88013e8" >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > apt install docker-compose
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgd2ef096" class = "outline-3" >
< h3 id = "orgd2ef096" > Setup Docker Networks< / h3 >
< div class = "outline-text-3" id = "text-orgd2ef096" >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > docker network create --gateway 192.168.90.1 --subnet 192.168.90.0/24 t2_proxy
docker network create docker_default
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgefaaeb5" class = "outline-3" >
< h3 id = "orgefaaeb5" > Change Timezone< / h3 >
< div class = "outline-text-3" id = "text-orgefaaeb5" >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > timedatectl set-timezone Europe/Paris
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org28378b4" class = "outline-3" >
< h3 id = "org28378b4" > Secure the Web Server< / h3 >
< div class = "outline-text-3" id = "text-org28378b4" >
< p >
Most of it comes from < a href = "https://github.com/imthenachoman/How-To-Secure-A-Linux-Server" > here< / a > .
< / p >
< ul class = "org-ul" >
< li > Set < code > PasswordAuthentication< / code > no in < code > /etc/ssh/sshd_config< / code > < / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-orgd02e736" class = "outline-3" >
< h3 id = "orgd02e736" > Automatic Security Updates< / h3 >
< div class = "outline-text-3" id = "text-orgd02e736" >
< p >
The procedure is well explained < a href = "https://www.linuxbabe.com/ubuntu/automatic-security-update-unattended-upgrades-ubuntu" > here< / a > .
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > apt install unattended-upgrades update-notifier-common
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Edit < code > /etc/apt/apt.conf.d/50unattended-upgrades< / code > , and change the following lines:
< / p >
< div class = "org-src-container" >
< pre class = "src src-conf" > Unattended-Upgrade::Remove-Unused-Dependencies < span class = "org-string" > "true"< / span > ;
Unattended-Upgrade::Automatic-Reboot < span class = "org-string" > "true"< / span > ;
Unattended-Upgrade::Automatic-Reboot-Time < span class = "org-string" > "04:00"< / span > ;
< / pre >
< / div >
< p >
Edit < code > /etc/apt/apt.conf.d/20auto-upgrades< / code > :
< / p >
< div class = "org-src-container" >
< pre class = "src src-conf" > APT::Periodic::Update-Package-Lists < span class = "org-string" > "1"< / span > ;
APT::Periodic::Unattended-Upgrade < span class = "org-string" > "1"< / span > ;
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orga975f26" class = "outline-3" >
< h3 id = "orga975f26" > Setup cronjobs< / h3 >
< div class = "outline-text-3" id = "text-orga975f26" >
< p >
Create a folder < code > ~/cron< / code > with all the scripts and logs related to cron.
< / p >
< p >
To edit the cron jobs, type < code > crontab -e< / code > and add a line like:
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-conf" > */5 * * * * /home/thomas/cron/caddy_update.sh > > /home/thomas/cron/caddy_update.log 2> & 1
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
That will run every 5 minutes.
To check how the first part of the crontab works, check < a href = "https://crontab.guru/" > this website< / a > .
< / p >
< / div >
< / div >
< div id = "outline-container-orgcb0d234" class = "outline-3" >
< h3 id = "orgcb0d234" > Run < code > docker-compose< / code > < / h3 >
< div class = "outline-text-3" id = "text-orgcb0d234" >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-bash" > < span class = "org-type" > cd< / span > ~/docker & & docker-compose up -d
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-orge39332b" class = "outline-2" >
< h2 id = "orge39332b" > Maintenance - How To< / h2 >
< div class = "outline-text-2" id = "text-orge39332b" >
< / div >
< div id = "outline-container-orgab9cc12" class = "outline-3" >
< h3 id = "orgab9cc12" > Update System/Packages< / h3 >
< div class = "outline-text-3" id = "text-orgab9cc12" >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > < span class = "org-type" > sudo< / span > -- sh -c < span class = "org-string" > 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgbd671d1" class = "outline-3" >
< h3 id = "orgbd671d1" > Docker Commands< / h3 >
< div class = "outline-text-3" id = "text-orgbd671d1" >
< ul class = "org-ul" >
< li > Starting a container: < code > $ docker start homeassistant< / code > < / li >
< li > Stopping a container: < code > $ docker stop homeassistant< / code > < / li >
< li > Restarting a container: < code > $ docker restart homeassistant< / code > < / li >
< li > Listing the running containers: < code > $ docker ps or $ cd ~/docker/ & & docker-compose ps< / code > < / li >
< li > View the logs of a container: < code > $ docker logs -f homeassistant< / code > < / li >
< li > Drop a shell into a container: < code > $ docker exec -it homeassistant /bin/bash< / code > < / li >
< li > Update specific container: < code > docker-compose pull --ignore-pull-failures homeassistant< / code > < / li >
< / ul >
< p >
Update All Containers
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > < span class = "org-type" > cd< / span > ~/docker/ & & docker-compose pull --ignore-pull-failures & & docker-compose up -d
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Clean up Docker environment
This will delete all unused images, volumes and networks.
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker system prune -f & & docker image prune -f & & docker volume prune -f
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgc233df6" class = "outline-3" >
< h3 id = "orgc233df6" > Add User and Password for Basic Authentication< / h3 >
< div class = "outline-text-3" id = "text-orgc233df6" >
< ul class = "org-ul" >
< li > Go to < a href = "https://www.web2generators.com/apache-tools/htpasswd-generator" > https://www.web2generators.com/apache-tools/htpasswd-generator< / a > and type the username and password< / li >
< li > Alternatively, type < code > htpasswd -nb username mystrongpassword< / code > in the shell< / li >
< li > Paste the output in < code > ~/docker/shared/.htpasswd< / code > < / li >
< / ul >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org33e06c1" class = "outline-3" >
< h3 id = "org33e06c1" > Snapraid< / h3 >
< div class = "outline-text-3" id = "text-org33e06c1" >
2021-01-03 22:54:40 +01:00
< p >
To see all files “ backed up” by snapraid, use:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec -ti snapraid snapraid list | fzf
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
In reality, snapraid in ran from the docker container:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec -ti snapraid snapraid fix -f < path_to_file>
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
The path to file should be relative: < code > /srv/storage/Cloud/org/file.org< / code > -> < code > /Cloud/org/file.org< / code >
< / p >
< / div >
< / div >
< div id = "outline-container-orged978b5" class = "outline-3" >
< h3 id = "orged978b5" > Restore Online backup with < code > restic< / code > < / h3 >
< div class = "outline-text-3" id = "text-orged978b5" >
< p >
To list backups:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec restic restic snapshots
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< pre class = "example" >
ID Time Host Tags Paths
--------------------------------------------------------------------------------
a7b98408 2020-09-03 21:18:00 4803c2af7d4e /data/documents/manuals
088e31a4 2020-09-03 21:50:26 4803c2af7d4e /data/documents/manuals
9cf0b480 2020-09-03 22:05:47 4803c2af7d4e /data/documents/manuals
--------------------------------------------------------------------------------
3 snapshots
< / pre >
< p >
Force backup of folder:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec restic restic backup /data/documents/manuals
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< pre class = "example" >
Files: 0 new, 2 changed, 8475 unmodified
Dirs: 0 new, 2 changed, 0 unmodified
Added to the repo: 1.010 KiB
processed 8477 files, 589.800 MiB in 0:02
snapshot 9cf0b480 saved
< / pre >
< p >
Find the path to the file within the snapshot:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec restic restic < span class = "org-type" > find< / span > file_name
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Find files only for a specific snapshot:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec restic restic < span class = "org-type" > find< / span > -s latest file_name
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
Backup files/folders:
< / p >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-bash" > docker exec restic restic restore --include /data/documents/manuals --target / 088e31a4
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< p >
You can use < code > latest< / code > instead of the ID.
< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orga8d1885" class = "outline-2" >
< h2 id = "orga8d1885" > Docker-Compose< / h2 >
< div class = "outline-text-2" id = "text-orga8d1885" >
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > version< / span > : < span class = "org-string" > "3.2"< / span >
< / pre >
< / div >
< / div >
< div id = "outline-container-orgff78ad6" class = "outline-3" >
< h3 id = "orgff78ad6" > Networks< / h3 >
< div class = "outline-text-3" id = "text-orgff78ad6" >
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > networks< / span > :
< span class = "org-variable-name" > t2_proxy< / span > :
< span class = "org-variable-name" > external< / span > :
< span class = "org-variable-name" > name< / span > : t2_proxy
< span class = "org-variable-name" > backend< / span > :
< span class = "org-variable-name" > external< / span > : < span class = "org-constant" > false< / span >
< span class = "org-variable-name" > default< / span > :
< span class = "org-variable-name" > driver< / span > : bridge
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org9442cd9" class = "outline-3" >
< h3 id = "org9442cd9" > < code > traefik< / code > - Application proxy< / h3 >
< div class = "outline-text-3" id = "text-org9442cd9" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > services< / span > :
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > traefik< / span > :
< span class = "org-variable-name" > container_name< / span > : traefik
< span class = "org-variable-name" > image< / span > : traefik:2.2.1
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > command< / span > :
- --global.checkNewVersion=true
- --global.sendAnonymousUsage=false
- --entryPoints.http.address=:80
- --entryPoints.https.address=:443
- --entrypoints.https.forwardedHeaders.trustedIPs=173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/12,172.64.0.0/13,131.0.72.0/22
- --entryPoints.traefik.address=:8080
- --api=true
- --api.dashboard=true
- --log=true
- --log.level=ERROR < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > (Default: error) DEBUG, INFO, WARN, ERROR, FATAL, PANIC< / span >
- --accessLog=true
- --accessLog.filePath=/var/log/access.log
- --accessLog.filters.statusCodes=400-499
- --providers.docker=true
- --providers.docker.endpoint=unix:///var/run/docker.sock
- --providers.docker.defaultrule=Host(`{{ index .Labels < span class = "org-string" > "com.docker.compose.service"< / span > }}.$DOMAINNAME`)
- --providers.docker.exposedByDefault=false
- --providers.docker.network=t2_proxy
- --providers.docker.swarmMode=false
- --providers.file.directory=/rules
- --providers.file.watch=true
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - --certificatesResolvers.dns-cloudflare.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory # LetsEncrypt Staging Server - uncomment when testing< / span >
- --certificatesResolvers.dns-cloudflare.acme.email=$CLOUDFLARE_EMAIL
- --certificatesResolvers.dns-cloudflare.acme.storage=/acme.json
- --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.provider=cloudflare
- --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53
< span class = "org-variable-name" > networks< / span > :
< span class = "org-variable-name" > t2_proxy< / span > :
< span class = "org-variable-name" > ipv4_address< / span > : 192.168.90.254 < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > You can specify a static IP< / span >
< span class = "org-variable-name" > security_opt< / span > :
- no-new-privileges:true
< span class = "org-variable-name" > ports< / span > :
- 80:80
- 443:443
- 8080:8080
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/traefik2/rules:/rules
- $CONFIGDIR/traefik2/acme/acme.json:/acme.json
- $CONFIGDIR/traefik2/shared:/shared
- /var/log/traefik:/var/log
- /var/run/docker.sock:/var/run/docker.sock:ro
< span class = "org-variable-name" > environment< / span > :
- CF_API_EMAIL=$CLOUDFLARE_EMAIL
- CF_API_KEY=$CLOUDFLARE_API_KEY
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > HTTP-to-HTTPS Redirect< / span >
- < span class = "org-string" > "traefik.http.routers.http-catchall.entrypoints=http"< / span >
- < span class = "org-string" > "traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)"< / span >
- < span class = "org-string" > "traefik.http.routers.http-catchall.middlewares=redirect-to-https"< / span >
- < span class = "org-string" > "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > HTTP Routers< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.rule=Host(`traefik.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.tls=true"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - "traefik.http.routers.traefik-rtr.tls.certresolver=dns-cloudflare" # Comment out this line after first run of traefik to force the use of wildcard certs< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.tls.domains[0].main=$DOMAINNAME"< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.tls.domains[0].sans=*.$DOMAINNAME"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Services - API< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.service=api@internal"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Middlewares< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.middlewares=middlewares-basic-auth@file"< / span >
- < span class = "org-string" > "traefik.http.routers.traefik-rtr.middlewares=middlewares-rate-limit@file,middlewares-basic-auth@file"< / span >
- < span class = "org-string" > "traefik.http.middlewares.traefik-auth.basicauth.users=tdehaeze:$$apr1$$d.JmbY5J$$K8btOi1fwwVYOkCnicCVi."< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Authelia< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - 'traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://login.$DOMAINNAME/'< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - 'traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true'< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User, Remote-Groups'< / span >
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org682fd4a" class = "outline-3" >
< h3 id = "org682fd4a" > < code > homer< / code > - Home page< / h3 >
< div class = "outline-text-3" id = "text-org682fd4a" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > homer< / span > :
< span class = "org-variable-name" > container_name< / span > : homer
< span class = "org-variable-name" > image< / span > : b4bz/homer
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > environment< / span > :
2021-01-08 01:43:48 +01:00
- UID=$PUID
- GID=$PGID
2021-01-03 22:54:40 +01:00
- TZ=$TZ
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/homer/assets/:/www/assets
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.homer-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.homer-rtr.rule=Host(`homer.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.homer-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.homer-rtr.service=homer-svc"< / span >
- < span class = "org-string" > "traefik.http.services.homer-svc.loadbalancer.server.port=8080"< / span >
< / pre >
< / div >
< / div >
< div id = "outline-container-org66a172e" class = "outline-4" >
< h4 id = "org66a172e" > < code > config.yml< / code > < / h4 >
< div class = "outline-text-4" id = "text-org66a172e" >
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-comment" > ---< / span >
< span class = "org-variable-name" > title< / span > : < span class = "org-string" > "Homepage"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Homer"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "assets/homer.png"< / span >
< span class = "org-variable-name" > header< / span > : < span class = "org-constant" > false< / span >
< span class = "org-variable-name" > footer< / span > : < span class = "org-constant" > false< / span >
< span class = "org-variable-name" > columns< / span > : < span class = "org-string" > "auto"< / span >
< span class = "org-variable-name" > connectivityCheck< / span > : < span class = "org-constant" > false< / span >
< span class = "org-variable-name" > theme< / span > : default
< span class = "org-variable-name" > links< / span > : []
< span class = "org-variable-name" > services< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Websites"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-desktop"< / span >
< span class = "org-variable-name" > items< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Wiki"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/brain.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Digital Brain"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://brain.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Research"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/orgmode.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Research Pages"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://research.tdehaeze.xyz"< / span >
2021-02-10 18:02:02 +01:00
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Dotfiles"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/dotfiles.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "My Literate Dotfiles"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://dotfiles.tdehaeze.xyz"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Utilities"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-rss"< / span >
< span class = "org-variable-name" > items< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Miniflux"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/miniflux.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "RSS Feeds"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://rss.tdehaeze.xyz"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "Bitwarden"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/bitwarden.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "Password Manager"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "https://bw.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Home Assistant"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/homeassistant.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Home Assistant"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "http://home.tdehaeze.xyz:8123"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Guacamole"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/guacamole.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "SSH Access"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://guacamole.tdehaeze.xyz/"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Cloud"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-cloud"< / span >
< span class = "org-variable-name" > items< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Cloud"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/cloud.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Simple Personnal Could"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://cloud.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Syncthing"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/syncthing.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "P2P Sync"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://syncthing.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Gitea"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/gitea.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Git Server"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://git.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Download"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-download"< / span >
< span class = "org-variable-name" > items< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Transmission"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/transmission.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Torrents"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://torrent.tdehaeze.xyz/transmission/web/"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "transfer"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/transfer.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "Transfer.sh"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "https://file.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "deemix"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Download Music"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/deezer.png"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://deemix.tdehaeze.xyz"< / span >
2021-02-10 18:02:02 +01:00
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Aria2"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/aria2.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Direct Downloads"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "http://dl.tdehaeze.xyz"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Media"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-film"< / span >
< span class = "org-variable-name" > items< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Jellyfin"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/jellyfin.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Media Library"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://jellyfin.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Config"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-cog"< / span >
< span class = "org-variable-name" > items< / span > :
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Portainer"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/portainer.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Manger Docker"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://portainer.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Traefik"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/traefik.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "Reverse Proxy"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "https://traefik.tdehaeze.xyz"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Local"< / span >
< span class = "org-variable-name" > icon< / span > : < span class = "org-string" > "fas fa-home"< / span >
< span class = "org-variable-name" > items< / span > :
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "Jackett"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/jackett.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "Download API"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "http://192.168.1.150:9117/"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "Radarr"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/radarr.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "Movie Manager"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "http://192.168.1.150:7878/"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "Sonarr"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/sonarr.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "TV Shows Manager"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "http://192.168.1.150:8989/"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "Ombi"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/ombi.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "Request Content"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "https://ombi.tdehaeze.xyz/"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - name: "Bazarr"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > logo: "/assets/tools/bazarr.png"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > subtitle: "Subtitles Manager"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > url: "http://192.168.1.150:6767/"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "Scrutiny"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/scrutiny.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "S.M.A.R.T"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "http://192.168.1.150:8089/web/dashboard"< / span >
- < span class = "org-variable-name" > name< / span > : < span class = "org-string" > "OctoPrint"< / span >
< span class = "org-variable-name" > logo< / span > : < span class = "org-string" > "/assets/tools/octoprint.png"< / span >
< span class = "org-variable-name" > subtitle< / span > : < span class = "org-string" > "3D-Printing"< / span >
< span class = "org-variable-name" > url< / span > : < span class = "org-string" > "http://192.168.1.56/"< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< / div >
2021-01-03 22:54:40 +01:00
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org7d77805" class = "outline-3" >
< h3 id = "org7d77805" > < code > restic< / code > - Automatic online backups< / h3 >
< div class = "outline-text-3" id = "text-org7d77805" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > restic< / span > :
< span class = "org-variable-name" > container_name< / span > : restic
< span class = "org-variable-name" > image< / span > : mazzolino/restic
< span class = "org-variable-name" > restart< / span > : < span class = "org-string" > "no"< / span >
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > environment< / span > :
2021-01-08 01:43:48 +01:00
- RUN_ON_STARTUP=true
- BACKUP_CRON=0 30 0 * * *
- RESTIC_REPOSITORY=rclone:mega:mega
- RESTIC_PASSWORD=< span class = "org-string" > "$RESTIC_PASSWORD"< / span >
- RESTIC_BACKUP_SOURCES=/data
- RESTIC_FORGET_ARGS=--keep-daily 7 --keep-weekly 4 --keep-monthly 12
- UID=$PUID
- GID=$PGID
2021-01-03 22:54:40 +01:00
- TZ=$TZ
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/restic:/root/.config/rclone
- /srv/storage/Cloud/thesis:/data/thesis
< / pre >
< / div >
< / div >
< div id = "outline-container-orgb2219b0" class = "outline-4" >
< h4 id = "orgb2219b0" > < code > rclone.conf< / code > < / h4 >
< div class = "outline-text-4" id = "text-orgb2219b0" >
< div class = "org-src-container" >
< pre class = "src src-conf" > [< span class = "org-type" > mega< / span > ]
< span class = "org-variable-name" > type< / span > = mega
< span class = "org-variable-name" > user< / span > = dehaeze.thomas@gmail.com
< span class = "org-variable-name" > pass< / span > = < < get-password(passname=< span class = "org-string" > "nas/rclone_mega_pass"< / span > )> >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< / div >
2021-01-03 22:54:40 +01:00
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orgba8c1aa" class = "outline-3" >
< h3 id = "orgba8c1aa" > < code > snapraid< / code > - Manage local backup with parity disk< / h3 >
< div class = "outline-text-3" id = "text-orgba8c1aa" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > snapraid< / span > :
< span class = "org-variable-name" > container_name< / span > : snapraid
< span class = "org-variable-name" > image< / span > : xagaba/snapraid
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > privileged< / span > : < span class = "org-constant" > true< / span >
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > volumes< / span > :
2021-01-08 01:43:48 +01:00
- /mnt:/mnt
- $CONFIGDIR/snapraid:/config
- < span class = "org-variable-name" > type< / span > : < span class = "org-string" > "bind"< / span >
< span class = "org-variable-name" > source< / span > : /dev/disk
< span class = "org-variable-name" > target< / span > : /dev/disk
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
< / pre >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< div id = "outline-container-org243fb45" class = "outline-4" >
< h4 id = "org243fb45" > < code > snapraid.conf< / code > < / h4 >
< div class = "outline-text-4" id = "text-org243fb45" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-conf" > < span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Defines the file to use as parity storage< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > It must NOT be in a data disk< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "parity FILE_PATH"< / span >
parity /mnt/parity/snapraid.parity
2021-01-03 22:54:40 +01:00
2021-01-08 01:43:48 +01:00
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Defines the files to use as content list< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > You can use multiple specification to store more copies< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > You must have least one copy for each parity file plus one. Some more don't< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > hurt< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > They can be in the disks used for data, parity or boot,< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > but each file must be in a different disk< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "content FILE_PATH"< / span >
content /var/snapraid.content
content /mnt/disk0/.snapraid.content
content /mnt/disk1/.snapraid.content
2021-01-03 22:54:40 +01:00
2021-01-08 01:43:48 +01:00
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Defines the data disks to use< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > The order is relevant for parity, do not change it< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "disk DISK_NAME DISK_MOUNT_POINT"< / span >
disk d0 /mnt/disk0
disk d1 /mnt/disk1
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Excludes hidden files and directories (uncomment to enable).< / span >
< span class = "org-comment-delimiter" > #< / span > < span class = "org-comment" > nohidden< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Defines files and directories to exclude< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Remember that all the paths are relative at the mount points< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "exclude FILE"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "exclude DIR/"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "exclude /PATH/FILE"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > Format: "exclude /PATH/DIR/"< / span >
exclude *.unrecoverable
exclude /tmp/
exclude /lost+found/
exclude *.!sync
exclude .AppleDouble
exclude ._AppleDouble
exclude .DS_Store
exclude ._.DS_Store
exclude .Thumbs.db
exclude .fseventsd
exclude .Spotlight-V100
exclude .TemporaryItems
exclude .Trashes
exclude .AppleDB
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< div id = "outline-container-orgf79de7e" class = "outline-4" >
< h4 id = "orgf79de7e" > < code > snapraid-runner.conf< / code > < / h4 >
< div class = "outline-text-4" id = "text-orgf79de7e" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-conf" > [< span class = "org-type" > snapraid< / span > ]
; path to the snapraid executable (e.g. /bin/snapraid)
< span class = "org-variable-name" > executable< / span > = /usr/bin/snapraid
; path to the snapraid config to be used
< span class = "org-variable-name" > config< / span > = /config/snapraid.conf
; abort operation if there are more deletes than this, set to -1 to disable
< span class = "org-variable-name" > deletethreshold< / span > = -1
; if you want touch to be ran each time
< span class = "org-variable-name" > touch< / span > = false
[< span class = "org-type" > logging< / span > ]
; logfile to write to, leave empty to disable
< span class = "org-variable-name" > file< / span > = /config/snapraid.log
; maximum logfile size in KiB, leave empty for infinite
< span class = "org-variable-name" > maxsize< / span > = < span class = "org-highlight-numbers-number" > 5000< / span >
; [email]
; ; when to send an email, comma-separated list of [success, error]
< span class = "org-variable-name" > ; sendon< / span > = success,error
; ; set to false to get full programm output via email
< span class = "org-variable-name" > ; short< / span > = true
< span class = "org-variable-name" > ; subject< / span > = [SnapRAID] Status Report:
< span class = "org-variable-name" > ; from< / span > =
< span class = "org-variable-name" > ; to< / span > =
; ; maximum email size in KiB
< span class = "org-variable-name" > ; maxsize< / span > = < span class = "org-highlight-numbers-number" > 500< / span >
;
; [smtp]
< span class = "org-variable-name" > ; host< / span > =
; ; leave empty for default port
< span class = "org-variable-name" > ; port< / span > =
; ; set to < span class = "org-string" > "true"< / span > to activate
< span class = "org-variable-name" > ; ssl< / span > = false
< span class = "org-variable-name" > ; tls< / span > = false
< span class = "org-variable-name" > ; user< / span > =
< span class = "org-variable-name" > ; password< / span > =
[< span class = "org-type" > scrub< / span > ]
; set to true to run scrub after sync
< span class = "org-variable-name" > enabled< / span > = false
< span class = "org-variable-name" > percentage< / span > = < span class = "org-highlight-numbers-number" > 12< / span >
< span class = "org-variable-name" > older-than< / span > = < span class = "org-highlight-numbers-number" > 10< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< / div >
2021-01-03 22:54:40 +01:00
2021-01-08 01:43:48 +01:00
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org1646b45" class = "outline-3" >
< h3 id = "org1646b45" > < code > portainer< / code > - Manage docker< / h3 >
< div class = "outline-text-3" id = "text-org1646b45" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > portainer< / span > :
< span class = "org-variable-name" > container_name< / span > : portainer
< span class = "org-variable-name" > image< / span > : portainer/portainer
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > command< / span > : -H unix:///var/run/docker.sock
< span class = "org-variable-name" > command< / span > : --no-auth
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > security_opt< / span > :
- no-new-privileges:true
< span class = "org-variable-name" > volumes< / span > :
- /var/run/docker.sock:/var/run/docker.sock:ro
- $CONFIGDIR/portainer:/data
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
2021-01-08 01:43:48 +01:00
- TZ=$TZ
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.portainer-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.portainer-rtr.rule=Host(`portainer.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.portainer-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.portainer-rtr.service=portainer-svc"< / span >
- < span class = "org-string" > "traefik.http.routers.portainer-rtr.middlewares=traefik-auth"< / span >
- < span class = "org-string" > "traefik.http.services.portainer-svc.loadbalancer.server.port=9000"< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org42336f6" class = "outline-3" >
< h3 id = "org42336f6" > < code > wireguard< / code > - VPN< / h3 >
< div class = "outline-text-3" id = "text-org42336f6" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > wireguard< / span > :
< span class = "org-variable-name" > container_name< / span > : wireguard
< span class = "org-variable-name" > image< / span > : linuxserver/wireguard
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > cap_add< / span > :
- NET_ADMIN
- SYS_MODULE
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
- SERVERURL=wireguard.tdehaeze.xyz
- SERVERPORT=51820
- PEERS=3
- PEERDNS=auto
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/wireguard:/config
- /lib/modules:/lib/modules
< span class = "org-variable-name" > ports< / span > :
- 51820:51820/udp
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org3bffa6e" class = "outline-3" >
< h3 id = "org3bffa6e" > < code > gitea< / code > - Git server< / h3 >
< div class = "outline-text-3" id = "text-org3bffa6e" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > gitea< / span > :
< span class = "org-variable-name" > container_name< / span > : git
2021-02-10 18:02:02 +01:00
< span class = "org-variable-name" > image< / span > : gitea/gitea:1.13.2
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > depends_on< / span > :
- gitea_db
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
2021-01-08 01:43:48 +01:00
- t2_proxy
2021-01-03 22:54:40 +01:00
- backend
< span class = "org-variable-name" > volumes< / span > :
2021-01-08 01:43:48 +01:00
- $CONFIGDIR/gitea:/data
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
2021-01-08 01:43:48 +01:00
- SSH_PORT=$GITEA_SSH_PORT
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > ports< / span > :
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "2222:22"< / span >
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.git-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.git-rtr.rule=Host(`git.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.git-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.git-rtr.service=git-svc"< / span >
- < span class = "org-string" > "traefik.http.services.git-svc.loadbalancer.server.port=3000"< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > gitea_db< / span > :
< span class = "org-variable-name" > container_name< / span > : gitea_db
< span class = "org-variable-name" > image< / span > : mariadb:10
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- backend
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > ports< / span > :
- 3306:3306
< span class = "org-variable-name" > environment< / span > :
- MYSQL_ROOT_PASSWORD=$GITEA_DB_MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=$GITEA_DB_MYSQL_PASSWORD
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/mariadb:/var/lib/mysql
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org5079d4d" class = "outline-3" >
< h3 id = "org5079d4d" > < code > caddy< / code > - Research Pages< / h3 >
< div class = "outline-text-3" id = "text-org5079d4d" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > caddy< / span > :
< span class = "org-variable-name" > container_name< / span > : caddy
< span class = "org-variable-name" > image< / span > : abiosoft/caddy:1.0.3-no-stats
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
2021-01-08 01:43:48 +01:00
- t2_proxy
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
2021-01-08 01:43:48 +01:00
- PLUGINS=git
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > volumes< / span > :
2021-01-08 01:43:48 +01:00
- $CONFIGDIR/caddy/Caddyfile:/etc/Caddyfile
- $CONFIGDIR/web:/srv
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - ~/.ssh:/root/.ssh< / span >
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.caddy-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.caddy-rtr.rule=Host(`research.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.caddy-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.caddy-rtr.service=caddy-svc"< / span >
- < span class = "org-string" > "traefik.http.services.caddy-svc.loadbalancer.server.port=2015"< / span >
< / pre >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orgefebb52" class = "outline-4" >
< h4 id = "orgefebb52" > < code > Caddyfile< / code > < / h4 >
< div class = "outline-text-4" id = "text-orgefebb52" >
2021-01-08 01:43:48 +01:00
< div class = "org-src-container" >
< pre class = "src src-conf" > 0.0.0.0:< span class = "org-highlight-numbers-number" > 2015< / span > {
root /srv/www/
< span class = "org-type" > git< / span > {
repo https://git.tdehaeze.xyz/tdehaeze/research-home-page
path /srv/www/
interval -1
hook /research-home-page/webhook QHZgAKjD8q2v54Ru
then git submodule update --init --recursive --merge
}
}
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< / div >
2021-01-03 22:54:40 +01:00
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org561b908" class = "outline-3" >
< h3 id = "org561b908" > < code > caddy< / code > - Dotfiles< / h3 >
< div class = "outline-text-3" id = "text-org561b908" >
2021-01-11 14:50:37 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > dotfiles< / span > :
< span class = "org-variable-name" > container_name< / span > : dotfiles
< span class = "org-variable-name" > image< / span > : abiosoft/caddy:1.0.3-no-stats
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
- PLUGINS=git
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/dotfiles/Caddyfile:/etc/Caddyfile
- $CONFIGDIR/dotfiles/www:/srv/www
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.dotfiles-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.dotfiles-rtr.rule=Host(`dotfiles.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.dotfiles-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.dotfiles-rtr.service=dotfiles-svc"< / span >
- < span class = "org-string" > "traefik.http.services.dotfiles-svc.loadbalancer.server.port=2015"< / span >
< / pre >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orgcb02743" class = "outline-4" >
< h4 id = "orgcb02743" > < code > Caddyfile< / code > < / h4 >
< div class = "outline-text-4" id = "text-orgcb02743" >
2021-01-11 14:50:37 +01:00
< div class = "org-src-container" >
< pre class = "src src-conf" > 0.0.0.0:< span class = "org-highlight-numbers-number" > 2015< / span > {
root /srv/www/docs/
< span class = "org-type" > git< / span > {
repo https://git.tdehaeze.xyz/tdehaeze/literate-dotfiles
path /srv/www/
interval -1
hook /literate-dotfiles/webhook QHZgAKjD8q2v54Ru
}
}
< / pre >
< / div >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org361b49e" class = "outline-3" >
< h3 id = "org361b49e" > < code > hugo< / code > - Wiki + Blog< / h3 >
< div class = "outline-text-3" id = "text-org361b49e" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > hugo< / span > :
< span class = "org-variable-name" > container_name< / span > : hugo
2021-02-10 18:02:02 +01:00
< span class = "org-variable-name" > image< / span > : tdehaeze/hugo-caddy
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > environment< / span > :
- REPO=git.tdehaeze.xyz/tdehaeze/digital-brain
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.hugo-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.hugo-rtr.rule=Host(`brain.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.hugo-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.hugo-rtr.service=hugo-svc"< / span >
- < span class = "org-string" > "traefik.http.services.hugo-svc.loadbalancer.server.port=2015"< / span >
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orgeea56a9" class = "outline-3" >
< h3 id = "orgeea56a9" > < code > syncthing< / code > - File Synchronization< / h3 >
< div class = "outline-text-3" id = "text-orgeea56a9" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > syncthing< / span > :
< span class = "org-variable-name" > container_name< / span > : syncthing
< span class = "org-variable-name" > image< / span > : linuxserver/syncthing
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
2021-01-08 01:43:48 +01:00
- UMASK_SET=022
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > volumes< / span > :
2021-01-08 01:43:48 +01:00
- $CONFIGDIR/syncthing:/config
- /srv/storage/Cloud:/Cloud
- /srv/storage/Cloud/pictures/phone:/Pictures
- /srv/storage/Cloud/pdfs:/Onyx/Download
- /srv/storage/Cloud/pdfs-notes:/Onyx/note
- /srv/storage/Cloud/.stfolder:/Onyx/.stfolder
- /srv/storage/.password-store:/.password-store
< span class = "org-variable-name" > ports< / span > :
- 22000:22000
- 21027:21027/udp
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.syncthing-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.syncthing-rtr.rule=Host(`syncthing.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.syncthing-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.syncthing-rtr.service=syncthing-svc"< / span >
- < span class = "org-string" > "traefik.http.routers.syncthing-rtr.middlewares=traefik-auth"< / span >
- < span class = "org-string" > "traefik.http.services.syncthing-svc.loadbalancer.server.port=8384"< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org061c36c" class = "outline-3" >
< h3 id = "org061c36c" > < code > miniflux< / code > - RSS reader< / h3 >
< div class = "outline-text-3" id = "text-org061c36c" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > miniflux< / span > :
< span class = "org-variable-name" > container_name< / span > : miniflux
2021-02-10 18:02:02 +01:00
< span class = "org-variable-name" > image< / span > : miniflux/miniflux
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
2021-01-08 01:43:48 +01:00
- backend
< span class = "org-variable-name" > depends_on< / span > :
- miniflux_db
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
2021-01-08 01:43:48 +01:00
- DATABASE_URL=postgres://miniflux:SCJWWXqHwehP7f8g@miniflux_db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=$MINIFLUX_ADMIN_NAME
- ADMIN_PASSWORD=$MINIFLUX_ADMIN_PASS
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.miniflux-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.miniflux-rtr.rule=Host(`rss.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.miniflux-rtr.tls=true"< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - 'traefik.http.routers.miniflux-rtr.middlewares=traefik-auth'< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - 'traefik.http.routers.miniflux-rtr.middlewares=authelia@docker'< / span >
- < span class = "org-string" > "traefik.http.routers.miniflux-rtr.service=miniflux-svc"< / span >
- < span class = "org-string" > "traefik.http.services.miniflux-svc.loadbalancer.server.port=8080"< / span >
< span class = "org-variable-name" > miniflux_db< / span > :
< span class = "org-variable-name" > container_name< / span > : miniflux_db
< span class = "org-variable-name" > image< / span > : postgres:12
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- backend
< span class = "org-variable-name" > environment< / span > :
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=$MINIFLUX_POSTGRES_PASSWORD
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/miniflux_db:/var/lib/postgresql/data
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org51bdaa4" class = "outline-3" >
< h3 id = "org51bdaa4" > < code > homeassistant< / code > - Home Automation< / h3 >
< div class = "outline-text-3" id = "text-org51bdaa4" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > homeassistant< / span > :
< span class = "org-variable-name" > container_name< / span > : homeassistant
< span class = "org-variable-name" > image< / span > : homeassistant/home-assistant
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-comment-delimiter" > #< / span > < span class = "org-comment" > networks:< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - t2_proxy< / span >
< span class = "org-comment-delimiter" > #< / span > < span class = "org-comment" > ports:< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - target: 8123< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > published: 8123< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > protocol: tcp< / span >
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > mode: host< / span >
< span class = "org-variable-name" > privileged< / span > : < span class = "org-constant" > true< / span >
< span class = "org-variable-name" > network_mode< / span > : host
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/homeassistant:/config
- /etc/localtime:/etc/localtime:ro
- /dev/bus/usb:/dev/bus/usb
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - ${USERDIR}/docker/shared:/shared< / span >
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
2021-01-08 01:43:48 +01:00
- PUID=$PUID
- PGID=$PGID
2021-01-03 22:54:40 +01:00
- TZ=$TZ
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > logging< / span > :
< span class = "org-variable-name" > options< / span > :
< span class = "org-variable-name" > max-size< / span > : 10m
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.homeassistant-rtr.entrypoints=https,http"< / span >
- < span class = "org-string" > "traefik.http.routers.homeassistant-rtr.rule=Host(`home.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.homeassistant-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.homeassistant-rtr.service=homeassistant-svc"< / span >
- < span class = "org-string" > "traefik.http.services.homeassistant-svc.loadbalancer.servers.url=http://172.17.0.1:8123"< / span >
< span class = "org-comment-delimiter" > #< / span > < span class = "org-comment" > - "traefik.http.services.homeassistant-svc.loadbalancer.server.port=8123"< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org675a101" class = "outline-3" >
< h3 id = "org675a101" > < code > jellyfin< / code > - Media server< / h3 >
< div class = "outline-text-3" id = "text-org675a101" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > jellyfin< / span > :
< span class = "org-variable-name" > container_name< / span > : jellyfin
< span class = "org-variable-name" > image< / span > : linuxserver/jellyfin
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/jellyfin:/config
- /srv/storage/TVShows:/data/tvshows
- /srv/storage/LiveMusic:/data/livemusic
- /srv/storage/Animes:/data/animes
- /srv/storage/Movies:/data/movies
- /srv/storage/Music:/data/music
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.jellyfin-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.jellyfin-rtr.rule=Host(`jellyfin.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.jellyfin-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.jellyfin-rtr.service=jellyfin-svc"< / span >
- < span class = "org-string" > "traefik.http.services.jellyfin-svc.loadbalancer.server.port=8096"< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orga8dc1e3" class = "outline-3" >
< h3 id = "orga8dc1e3" > < code > filebrowser< / code > - Web file browser< / h3 >
< div class = "outline-text-3" id = "text-orga8dc1e3" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > filebrowser< / span > :
< span class = "org-variable-name" > container_name< / span > : filebrowser
< span class = "org-variable-name" > image< / span > : filebrowser/filebrowser
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/filebrowser/database.db:/database.db
- $CONFIGDIR/filebrowser/.filebrowser.json:/.filebrowser.json
- /srv/storage:/srv/storage
< span class = "org-variable-name" > user< / span > : < span class = "org-string" > "${PUID}:${PGID}"< / span >
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
2021-01-08 01:43:48 +01:00
- < span class = "org-string" > "traefik.http.routers.filebrowser-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.filebrowser-rtr.rule=Host(`cloud.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.filebrowser-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.filebrowser-rtr.service=filebrowser-svc"< / span >
- < span class = "org-string" > "traefik.http.services.filebrowser-svc.loadbalancer.server.port=80"< / span >
< / pre >
< / div >
< / div >
< div id = "outline-container-org191aab8" class = "outline-4" >
< h4 id = "org191aab8" > < code > .filebrowser.json< / code > < / h4 >
< div class = "outline-text-4" id = "text-org191aab8" >
< div class = "org-src-container" >
< pre class = "src src-json" > {
< span class = "org-keyword" > "port"< / span > : < span class = "org-highlight-numbers-number" > 80< / span > ,
< span class = "org-keyword" > "baseURL"< / span > : < span class = "org-string" > ""< / span > ,
< span class = "org-keyword" > "address"< / span > : < span class = "org-string" > ""< / span > ,
< span class = "org-keyword" > "log"< / span > : < span class = "org-string" > "stdout"< / span > ,
< span class = "org-keyword" > "database"< / span > : < span class = "org-string" > "/database.db"< / span > ,
< span class = "org-keyword" > "root"< / span > : < span class = "org-string" > "/srv/storage"< / span >
}
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< / div >
2021-01-03 22:54:40 +01:00
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org3a5502c" class = "outline-3" >
< h3 id = "org3a5502c" > < code > scrutiny< / code > - Hard drive monitoring< / h3 >
< div class = "outline-text-3" id = "text-org3a5502c" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > scrutiny< / span > :
< span class = "org-variable-name" > container_name< / span > : scrutiny
< span class = "org-variable-name" > image< / span > : linuxserver/scrutiny
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- backend
< span class = "org-variable-name" > cap_add< / span > :
- SYS_RAWIO
- SYS_ADMIN
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- SCRUTINY_API_ENDPOINT=http://localhost:8080
- TZ=$TZ
- SCRUTINY_WEB=true
- SCRUTINY_COLLECTOR=true
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/scrutiny:/config
- /run/udev:/run/udev:ro
< span class = "org-variable-name" > devices< / span > :
- /dev/sda:/dev/sda
- /dev/sdb:/dev/sdb
- /dev/sdc:/dev/sdc
- /dev/sdd:/dev/sdd
- /dev/nvme0n1:/dev/nvme0n1
< span class = "org-variable-name" > ports< / span > :
- 8089:8080
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org105492e" class = "outline-3" >
< h3 id = "org105492e" > < code > guacamole< / code > - Remote connection< / h3 >
< div class = "outline-text-3" id = "text-org105492e" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > guacamole< / span > :
< span class = "org-variable-name" > image< / span > : oznu/guacamole
< span class = "org-variable-name" > container_name< / span > : guacamole
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
- backend
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/guacamole:/config
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.guacamole-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.guacamole-rtr.rule=Host(`guacamole.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.guacamole-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.guacamole-rtr.service=guacamole-svc"< / span >
- < span class = "org-string" > "traefik.http.services.guacamole-svc.loadbalancer.server.port=8080"< / span >
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org12e136c" class = "outline-3" >
< h3 id = "org12e136c" > < code > transmission< / code > - Torrent server< / h3 >
< div class = "outline-text-3" id = "text-org12e136c" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
2021-01-08 01:43:48 +01:00
< pre class = "src src-yaml" > < span class = "org-variable-name" > transmission-openvpn< / span > :
< span class = "org-variable-name" > container_name< / span > : transmission
2021-02-10 18:02:02 +01:00
< span class = "org-variable-name" > image< / span > : haugene/transmission-openvpn
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
- backend
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
- CREATE_TUN_DEVICE=true
- ENABLE_UFW=true
- WEBPROXY_ENABLED=false
- TRANSMISSION_WEB_UI=combustion
- OPENVPN_PROVIDER=NORDVPN
- OPENVPN_USERNAME=$NORDVPN_NAME
- OPENVPN_PASSWORD=$NORDVPN_PASS
- NORDVPN_COUNTRY=FR
- NORDVPN_CATEGORY=P2P
- NORDVPN_PROTOCOL=tcp
- LOCAL_NETWORK=192.168.0.0/16
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > volumes< / span > :
- /srv/storage/Downloads:/data
2021-01-08 01:43:48 +01:00
- /etc/localtime:/etc/localtime:ro
< span class = "org-variable-name" > cap_add< / span > :
- NET_ADMIN
< span class = "org-variable-name" > ports< / span > :
- 9091:9091
- 51413:51413
- 51413:51413/udp
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.transmission-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.transmission-rtr.rule=Host(`torrent.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.transmission-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.transmission-rtr.service=transmission-svc"< / span >
- < span class = "org-string" > "traefik.http.routers.transmission-rtr.middlewares=traefik-auth"< / span >
- < span class = "org-string" > "traefik.http.services.transmission-svc.loadbalancer.server.port=9091"< / span >
< / pre >
< / div >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orgceb876c" class = "outline-3" >
< h3 id = "orgceb876c" > < code > aria2< / code > - Download daemon< / h3 >
< div class = "outline-text-3" id = "text-orgceb876c" >
2021-01-08 01:43:48 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > aria2< / span > :
< span class = "org-variable-name" > container_name< / span > : aria2
< span class = "org-variable-name" > image< / span > : opengg/aria2
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
2021-01-08 01:43:48 +01:00
< span class = "org-variable-name" > user< / span > : < span class = "org-string" > "${PUID}:${PGID}"< / span >
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/aria2:/config
- /srv/storage/Downloads:/downloads
< span class = "org-variable-name" > ports< / span > :
- 6800:6800
< / pre >
< / div >
< / div >
< div id = "outline-container-orgaafd6da" class = "outline-4" >
< h4 id = "orgaafd6da" > < code > aria2.conf< / code > < / h4 >
< div class = "outline-text-4" id = "text-orgaafd6da" >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > save-session< / span > =/config/aria2.session
< span class = "org-variable-name" > input-file< / span > =/config/aria2.session
< span class = "org-variable-name" > save-session-interval< / span > =< span class = "org-highlight-numbers-number" > 60< / span >
< span class = "org-variable-name" > dir< / span > =/downloads
< span class = "org-variable-name" > file-allocation< / span > =prealloc
< span class = "org-variable-name" > disk-cache< / span > =128M
< span class = "org-variable-name" > enable-rpc< / span > =true
< span class = "org-variable-name" > rpc-listen-port< / span > =< span class = "org-highlight-numbers-number" > 6800< / span >
< span class = "org-variable-name" > rpc-allow-origin-all< / span > =true
< span class = "org-variable-name" > rpc-listen-all< / span > =true
< span class = "org-variable-name" > rpc-secret< / span > =< < get-password(passname=< span class = "org-string" > "nas/aria2"< / span > )> >
< span class = "org-variable-name" > auto-file-renaming< / span > =false
< span class = "org-variable-name" > max-connection-per-server< / span > =< span class = "org-highlight-numbers-number" > 16< / span >
< span class = "org-variable-name" > min-split-size< / span > =1M
< span class = "org-variable-name" > split< / span > =< span class = "org-highlight-numbers-number" > 16< / span >
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
2021-01-08 01:43:48 +01:00
< / div >
2021-01-03 22:54:40 +01:00
2021-02-10 18:02:02 +01:00
< div id = "outline-container-org759769e" class = "outline-3" >
< h3 id = "org759769e" > < code > aria2-ui< / code > - Download web UI< / h3 >
< div class = "outline-text-3" id = "text-org759769e" >
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > aria2-ui< / span > :
< span class = "org-variable-name" > container_name< / span > : aria2-ui
< span class = "org-variable-name" > image< / span > : p3terx/ariang
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > environment< / span > :
- PUID=$PUID
- PGID=$PGID
< span class = "org-variable-name" > ports< / span > :
- 6880:6880
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.aria2-rtr.entrypoints=http"< / span >
- < span class = "org-string" > "traefik.http.routers.aria2-rtr.rule=Host(`dl.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.aria2-rtr.tls=false"< / span >
- < span class = "org-string" > "traefik.http.routers.aria2-rtr.service=aria2-svc"< / span >
- < span class = "org-string" > "traefik.http.services.aria2-svc.loadbalancer.server.port=6880"< / span >
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgdb3057e" class = "outline-3" >
< h3 id = "orgdb3057e" > < code > deemix< / code > - Music Download< / h3 >
< div class = "outline-text-3" id = "text-orgdb3057e" >
2021-01-03 22:54:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > deemix< / span > :
< span class = "org-variable-name" > container_name< / span > : deemix
2021-02-10 18:02:02 +01:00
< span class = "org-variable-name" > image< / span > : registry.gitlab.com/bockiii/deemix-docker
2021-01-03 22:54:40 +01:00
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > volumes< / span > :
2021-02-10 18:02:02 +01:00
- /srv/storage/Music:/downloads
2021-01-03 22:54:40 +01:00
- $CONFIGDIR/deemix:/config
< span class = "org-variable-name" > environment< / span > :
- TZ=$TZ
- PUID=$PUID
- PGID=$PGID
- ARL=$DEEMIX_ARL
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.deemix-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.deemix-rtr.rule=Host(`deemix.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.deemix-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.deemix-rtr.service=deemix-svc"< / span >
2021-02-10 18:02:02 +01:00
< span class = "org-comment-delimiter" > # < / span > < span class = "org-comment" > - "traefik.http.routers.deemix-rtr.middlewares=traefik-auth"< / span >
2021-01-03 22:54:40 +01:00
- < span class = "org-string" > "traefik.http.services.deemix-svc.loadbalancer.server.port=6595"< / span >
< / pre >
< / div >
< / div >
2021-02-10 18:02:02 +01:00
< div id = "outline-container-orgc2325d9" class = "outline-4" >
< h4 id = "orgc2325d9" > < code > .arl< / code > < / h4 >
< div class = "outline-text-4" id = "text-orgc2325d9" >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > < < get-password(passname< / span > =< span class = "org-string" > "nas/deemix_arl"< / span > )> >
< / pre >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-org98dce20" class = "outline-3" >
< h3 id = "org98dce20" > < code > linkding< / code > - Bookmark manager< / h3 >
< div class = "outline-text-3" id = "text-org98dce20" >
< div class = "org-src-container" >
< pre class = "src src-yaml" > < span class = "org-variable-name" > linkding< / span > :
< span class = "org-variable-name" > container_name< / span > : linkding
< span class = "org-variable-name" > image< / span > : sissbruecker/linkding:latest
< span class = "org-variable-name" > restart< / span > : unless-stopped
< span class = "org-variable-name" > networks< / span > :
- t2_proxy
< span class = "org-variable-name" > volumes< / span > :
- $CONFIGDIR/linkding:/etc/linkding/data
< span class = "org-variable-name" > environment< / span > :
- TZ=$TZ
- PUID=$PUID
- PGID=$PGID
< span class = "org-variable-name" > labels< / span > :
- < span class = "org-string" > "traefik.enable=true"< / span >
- < span class = "org-string" > "traefik.http.routers.linkding-rtr.entrypoints=https"< / span >
- < span class = "org-string" > "traefik.http.routers.linkding-rtr.rule=Host(`bm.$DOMAINNAME`)"< / span >
- < span class = "org-string" > "traefik.http.routers.linkding-rtr.tls=true"< / span >
- < span class = "org-string" > "traefik.http.routers.linkding-rtr.service=linkding-svc"< / span >
- < span class = "org-string" > "traefik.http.services.linkding-svc.loadbalancer.server.port=9090"< / span >
< / pre >
< / div >
< / div >
2021-01-03 22:54:40 +01:00
< / div >
< / div >
< div id = "outline-container-orgbb869cd" class = "outline-2" >
< h2 id = "orgbb869cd" > < code > .env< / code > - Variable used for Docker Compose< / h2 >
< div class = "outline-text-2" id = "text-orgbb869cd" >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > PUID< / span > =< span class = "org-highlight-numbers-number" > 1000< / span >
< span class = "org-variable-name" > PGID< / span > =< span class = "org-highlight-numbers-number" > 1000< / span >
< span class = "org-variable-name" > TZ< / span > =Europe/Paris
< span class = "org-variable-name" > CONFIGDIR< / span > =/home/thomas/docker/config
< span class = "org-variable-name" > DOMAINNAME< / span > =tdehaeze.xyz
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > CLOUDFLARE_EMAIL< / span > =dehaeze.thomas@gmail.com
< span class = "org-variable-name" > CLOUDFLARE_API_KEY< / span > =< < get-password(passname=< span class = "org-string" > "nas/cloudflare_api_key"< / span > )> >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > MINIFLUX_ADMIN_NAME< / span > =tdehaeze
< span class = "org-variable-name" > MINIFLUX_ADMIN_PASS< / span > =< < get-password(passname=< span class = "org-string" > "nas/miniflux_admin_pass"< / span > )> >
< span class = "org-variable-name" > MINIFLUX_POSTGRES_PASSWORD< / span > =< < get-password(passname=< span class = "org-string" > "nas/miniflux_postgres_pass"< / span > )> >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > RESTIC_PASSWORD< / span > =< < get-password(passname=< span class = "org-string" > "nas/restic_pass"< / span > )> >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > GITEA_DB_MYSQL_ROOT_PASSWORD< / span > =< < get-password(passname=< span class = "org-string" > "nas/gitea_mysql_root_pass"< / span > )> >
< span class = "org-variable-name" > GITEA_DB_MYSQL_PASSWORD< / span > =< < get-password(passname=< span class = "org-string" > "nas/gitea_mysql_pass"< / span > )> >
< span class = "org-variable-name" > GITEA_SSH_PORT< / span > =< span class = "org-highlight-numbers-number" > 2222< / span >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > NORDVPN_NAME< / span > =dehaeze.thomas@gmail.com
< span class = "org-variable-name" > NORDVPN_PASS< / span > =< < get-password(passname=< span class = "org-string" > "nordvpn.com/dehaeze.thomas@gmail.com"< / span > )> >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > GOTIFY_DEFAULTUSER_NAME< / span > =tdehaeze
< span class = "org-variable-name" > GOTIFY_DEFAULTUSER_PASS< / span > =< < get-password(passname=< span class = "org-string" > "nas/gotify_pass"< / span > )> >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > GUACAMOLE_POSTGRES_PASSWORD< / span > =< < get-password(passname=< span class = "org-string" > "nas/guacamole_postgres_pass"< / span > )> >
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-conf" > < span class = "org-variable-name" > DEEMIX_ARL< / span > =< < get-password(passname=< span class = "org-string" > "nas/deemix_arl"< / span > )> >
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-orgf0182df" class = "outline-2" >
< h2 id = "orgf0182df" > Cron Jobs< / h2 >
< div class = "outline-text-2" id = "text-orgf0182df" >
< / div >
< div id = "outline-container-org34f5942" class = "outline-3" >
< h3 id = "org34f5942" > Caddy Update< / h3 >
< div class = "outline-text-3" id = "text-org34f5942" >
< p >
Create a script < code > ~/cron/caddy_update.sh< / code > with:
< / p >
< div class = "org-src-container" >
< pre class = "src src-bash" > docker exec caddy /bin/sh -c < span class = "org-string" > "< / span > < span class = "org-type" > < span class = "org-string" > cd< / span > < / span > < span class = "org-string" > /srv/www & & < / span > < span class = "org-type" > < span class = "org-string" > echo< / span > < / span > < span class = "org-string" > -e \"Update repo < / span > < span class = "org-string" > < span class = "org-sh-quoted-exec" > $(< / span > < / span > < span class = "org-sh-quoted-exec" > date< / span > < span class = "org-string" > < span class = "org-sh-quoted-exec" > )< / span > < / span > < span class = "org-string" > \" & & < / span > < span class = "org-type" > < span class = "org-string" > git< / span > < / span > < span class = "org-string" > submodule update --recursive --remote --merge"< / span >
< / pre >
< / div >
< p >
Type < code > crontab -e< / code > and add this line:
< / p >
< div class = "org-src-container" >
2021-01-08 01:45:55 +01:00
< pre class = "src src-conf" > */5 * * * * /home/thomas/cron/caddy_update.sh > > /home/thomas/cron/caddy_update.log 2> & 1
2021-01-03 22:54:40 +01:00
< / pre >
< / div >
< / div >
< / div >
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2021-02-10 18:02:02 +01:00
< p class = "date" > Created: 2021-02-10 mer. 17:57< / p >
2021-01-03 22:54:40 +01:00
< / div >
< / body >
< / html >