From 8c3764629dfebf5e1f934e4b67ae352fff4e27f0 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 6 Jun 2018 09:17:22 +0000 Subject: [PATCH 1/5] Travis build: 13 --- manuscript/test.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 manuscript/test.md diff --git a/manuscript/test.md b/manuscript/test.md new file mode 100644 index 0000000..101d53d --- /dev/null +++ b/manuscript/test.md @@ -0,0 +1 @@ +Nananana... Batman! From a3f62bc904c575f1e9480522843ba68978deeace Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 6 Jun 2018 09:32:37 +0000 Subject: [PATCH 2/5] Travis build: 24 --- manuscript/test.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 manuscript/test.md diff --git a/manuscript/test.md b/manuscript/test.md new file mode 100644 index 0000000..101d53d --- /dev/null +++ b/manuscript/test.md @@ -0,0 +1 @@ +Nananana... Batman! From f2baf75a42c1170d4b2a5eed71b7e9fe5fff3c29 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 6 Jun 2018 09:32:48 +0000 Subject: [PATCH 3/5] Travis build: 23 --- manuscript/test.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 manuscript/test.md diff --git a/manuscript/test.md b/manuscript/test.md new file mode 100644 index 0000000..101d53d --- /dev/null +++ b/manuscript/test.md @@ -0,0 +1 @@ +Nananana... Batman! From 5d5b2f33dd5d71c88fa7ade7e30bf08aac311bf2 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 6 Jun 2018 09:34:47 +0000 Subject: [PATCH 4/5] Travis build: 25 --- manuscript/test.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 manuscript/test.md diff --git a/manuscript/test.md b/manuscript/test.md new file mode 100644 index 0000000..101d53d --- /dev/null +++ b/manuscript/test.md @@ -0,0 +1 @@ +Nananana... Batman! From 21e8a9b8d54693cf53531fd4dcf856b67656f6b2 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 6 Jun 2018 09:48:34 +0000 Subject: [PATCH 5/5] Travis build: 27 --- manuscript/advanced/tiny-tiny-rss.md | 16 ++++++++-------- manuscript/ha-docker-swarm/docker-swarm-mode.md | 4 ++-- manuscript/ha-docker-swarm/registry.md | 4 ++-- .../ha-docker-swarm/shared-storage-gluster.md | 4 ++-- manuscript/recipies/autopirate.md | 8 ++++---- manuscript/recipies/autopirate/headphones.md | 4 ++-- manuscript/recipies/autopirate/jackett.md | 4 ++-- manuscript/recipies/autopirate/lazylibrarian.md | 4 ++-- manuscript/recipies/autopirate/mylar.md | 4 ++-- manuscript/recipies/autopirate/nzbget.md | 4 ++-- manuscript/recipies/autopirate/nzbhydra.md | 4 ++-- manuscript/recipies/autopirate/ombi.md | 4 ++-- manuscript/recipies/autopirate/plexpy.md | 4 ++-- manuscript/recipies/autopirate/radarr.md | 4 ++-- manuscript/recipies/autopirate/sabnzbd.md | 4 ++-- manuscript/recipies/autopirate/sonarr.md | 4 ++-- manuscript/recipies/gitlab.md | 4 ++-- manuscript/recipies/instapy.md | 4 ++-- manuscript/recipies/nextcloud.md | 4 ++-- manuscript/reference/openvpn.md | 12 ++++++------ 20 files changed, 52 insertions(+), 52 deletions(-) diff --git a/manuscript/advanced/tiny-tiny-rss.md b/manuscript/advanced/tiny-tiny-rss.md index 0cbd6b9..471e0ef 100644 --- a/manuscript/advanced/tiny-tiny-rss.md +++ b/manuscript/advanced/tiny-tiny-rss.md @@ -31,7 +31,7 @@ I setup a directory for the ttrss data, at /data/ttrss. I created docker-compose.yml, as follows: -```` +``` rproxy: image: nginx:1.13-alpine ports: @@ -78,9 +78,9 @@ gmailsmtp: - user=davidy@funkypenguin.co.nz - pass=eqknehqflfbufzbh - DOMAIN_NAME=gmailsmtp.funkypenguin.co.nz -```` +``` -Run ````docker-compose up```` in the same directory, and watch the output. PostgreSQL container will create the "ttrss" database, and ttrss will start using it. +Run ```docker-compose up``` in the same directory, and watch the output. PostgreSQL container will create the "ttrss" database, and ttrss will start using it. # Login to UI @@ -91,23 +91,23 @@ Log into https://\. Default user is "admin" and password is " One of the native plugins enables the detection of "similar" articles. This requires the pg_trgm extension enabled in your database. -From the working directory, use ````docker exec```` to get a shell within your postgres container, and run "postgres" as the postgres user: -```` +From the working directory, use ```docker exec``` to get a shell within your postgres container, and run "postgres" as the postgres user: +``` [root@kvm nginx]# docker exec -it ttrss_postgres_1 /bin/sh # su - postgres No directory, logging in with HOME=/ $ psql psql (9.6.3) Type "help" for help. -```` +``` Add the trgm extension to your ttrss database: -```` +``` postgres=# \c ttrss You are now connected to database "ttrss" as user "postgres". ttrss=# CREATE EXTENSION pg_trgm; CREATE EXTENSION ttrss=# \q -```` +``` [ttrss]:https://tt-rss.org/ diff --git a/manuscript/ha-docker-swarm/docker-swarm-mode.md b/manuscript/ha-docker-swarm/docker-swarm-mode.md index ac2e953..2cae07d 100644 --- a/manuscript/ha-docker-swarm/docker-swarm-mode.md +++ b/manuscript/ha-docker-swarm/docker-swarm-mode.md @@ -62,13 +62,13 @@ To add a manager to this swarm, run the following command: Run the command provided on your second node to join it to the swarm as a manager. After adding the second node, the output of ```docker node ls``` (on either host) should reflect two nodes: -```` +``` [root@ds2 davidy]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS b54vls3wf8xztwfz79nlkivt8 ds1.funkypenguin.co.nz Ready Active Leader xmw49jt5a1j87a6ihul76gbgy * ds2.funkypenguin.co.nz Ready Active Reachable [root@ds2 davidy]# -```` +``` Repeat the process to add your third node. diff --git a/manuscript/ha-docker-swarm/registry.md b/manuscript/ha-docker-swarm/registry.md index 4e42ce0..e014b4f 100644 --- a/manuscript/ha-docker-swarm/registry.md +++ b/manuscript/ha-docker-swarm/registry.md @@ -103,9 +103,9 @@ To: ``` Then restart docker by running: -```` +``` systemctl restart docker-latest -```` +``` !!! tip "" Note the extra comma required after "false" above diff --git a/manuscript/ha-docker-swarm/shared-storage-gluster.md b/manuscript/ha-docker-swarm/shared-storage-gluster.md index c4b523c..acea145 100644 --- a/manuscript/ha-docker-swarm/shared-storage-gluster.md +++ b/manuscript/ha-docker-swarm/shared-storage-gluster.md @@ -55,7 +55,7 @@ mount -a && mount Atomic doesn't include the Gluster server components. This means we'll have to run glusterd from within a container, with privileged access to the host. Although convoluted, I've come to prefer this design since it once again makes the OS "disposable", moving all the config into containers and code. Run the following on each host: -```` +``` docker run \ -h glusterfs-server \ -v /etc/glusterfs:/etc/glusterfs:z \ @@ -67,7 +67,7 @@ docker run \ --restart=always \ --name="glusterfs-server" \ gluster/gluster-centos -```` +``` ### Create trusted pool On a single node (doesn't matter which), run ```docker exec -it glusterfs-server bash``` to launch a shell inside the container. diff --git a/manuscript/recipies/autopirate.md b/manuscript/recipies/autopirate.md index f0574a2..0c86b3f 100644 --- a/manuscript/recipies/autopirate.md +++ b/manuscript/recipies/autopirate.md @@ -84,15 +84,15 @@ Create at least /var/data/autopirate/authenticated-emails.txt, containing at lea **Start** with a swarm config file in docker-compose syntax, like this: -```` +``` version: '3' services: -```` +``` And **end** with a stanza like this: -```` +``` networks: traefik_public: external: true @@ -101,7 +101,7 @@ networks: ipam: config: - subnet: 172.16.11.0/24 -```` +``` !!! note Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](/reference/networks/) here. diff --git a/manuscript/recipies/autopirate/headphones.md b/manuscript/recipies/autopirate/headphones.md index 21e9e24..5d01ea9 100644 --- a/manuscript/recipies/autopirate/headphones.md +++ b/manuscript/recipies/autopirate/headphones.md @@ -13,7 +13,7 @@ hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and To include Headphones in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` headphones: image: linuxserver/headphones:latest env_file : /var/data/config/autopirate/headphones.env @@ -45,7 +45,7 @@ headphones_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/jackett.md b/manuscript/recipies/autopirate/jackett.md index 54d7d1c..4d148cd 100644 --- a/manuscript/recipies/autopirate/jackett.md +++ b/manuscript/recipies/autopirate/jackett.md @@ -13,7 +13,7 @@ This allows for getting recent uploads (like RSS) and performing searches. Jacke To include Jackett in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` jackett: image: linuxserver/jackett:latest env_file : /var/data/config/autopirate/jackett.env @@ -45,7 +45,7 @@ jackett_proxy: -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/lazylibrarian.md b/manuscript/recipies/autopirate/lazylibrarian.md index cc3814b..9bd6b2f 100644 --- a/manuscript/recipies/autopirate/lazylibrarian.md +++ b/manuscript/recipies/autopirate/lazylibrarian.md @@ -17,7 +17,7 @@ To include LazyLibrarian in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` lazylibrarian: image: linuxserver/lazylibrarian:latest env_file : /var/data/config/autopirate/lazylibrarian.env @@ -57,7 +57,7 @@ calibre-server: networks: - internal -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/mylar.md b/manuscript/recipies/autopirate/mylar.md index 7b9fe87..f4ba7fd 100644 --- a/manuscript/recipies/autopirate/mylar.md +++ b/manuscript/recipies/autopirate/mylar.md @@ -11,7 +11,7 @@ To include Mylar in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` mylar: image: linuxserver/mylar:latest env_file : /var/data/config/autopirate/mylar.env @@ -43,7 +43,7 @@ mylar_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/nzbget.md b/manuscript/recipies/autopirate/nzbget.md index 504ceef..5d3b9b8 100644 --- a/manuscript/recipies/autopirate/nzbget.md +++ b/manuscript/recipies/autopirate/nzbget.md @@ -17,7 +17,7 @@ To include NZBGet in your [AutoPirate](/recipies/autopirate/) stack !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 -```` +``` nzbget: image: linuxserver/nzbget env_file : /var/data/config/autopirate/nzbget.env @@ -49,7 +49,7 @@ nzbget_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! note NZBGet uses a 401 header to prompt for authentication. When you use OAuth2_proxy, this seems to break. Since we trust OAuth to authenticate us, we can just disable NZGet's own authentication, by changing ControlPassword to null in nzbget.conf (i.e. ```ControlPassword=```) diff --git a/manuscript/recipies/autopirate/nzbhydra.md b/manuscript/recipies/autopirate/nzbhydra.md index af77cc2..ccd349a 100644 --- a/manuscript/recipies/autopirate/nzbhydra.md +++ b/manuscript/recipies/autopirate/nzbhydra.md @@ -18,7 +18,7 @@ To include NZBHydra in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` nzbhydra: image: linuxserver/hydra:latest env_file : /var/data/config/autopirate/nzbhydra.env @@ -49,7 +49,7 @@ nzbhydra_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/ombi.md b/manuscript/recipies/autopirate/ombi.md index 80b1f87..64651fa 100644 --- a/manuscript/recipies/autopirate/ombi.md +++ b/manuscript/recipies/autopirate/ombi.md @@ -19,7 +19,7 @@ Automatically updates the status of requests when they are available on Plex/Emb To include Ombi in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` ombi: image: linuxserver/ombi:latest env_file : /var/data/config/autopirate/ombi.env @@ -50,7 +50,7 @@ ombi_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/plexpy.md b/manuscript/recipies/autopirate/plexpy.md index 57e83a7..40e611e 100644 --- a/manuscript/recipies/autopirate/plexpy.md +++ b/manuscript/recipies/autopirate/plexpy.md @@ -23,7 +23,7 @@ To include NZBGet in your [AutoPirate](/recipies/autopirate/) stack, include the !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 -```` +``` plexpy: image: linuxserver/plexpy:latest env_file : /var/data/config/autopirate/plexpy.env @@ -54,7 +54,7 @@ plexpy_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/radarr.md b/manuscript/recipies/autopirate/radarr.md index e1227f4..5771a7b 100644 --- a/manuscript/recipies/autopirate/radarr.md +++ b/manuscript/recipies/autopirate/radarr.md @@ -26,7 +26,7 @@ To include Radarr in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` radarr: image: linuxserver/radarr:latest env_file : /var/data/config/autopirate/radarr.env @@ -58,7 +58,7 @@ radarr_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/sabnzbd.md b/manuscript/recipies/autopirate/sabnzbd.md index 5f34abc..70e6b7e 100644 --- a/manuscript/recipies/autopirate/sabnzbd.md +++ b/manuscript/recipies/autopirate/sabnzbd.md @@ -14,7 +14,7 @@ SABnzbd is the workhorse of the stack. It takes .nzb files as input (_manually o To include SABnzbd in your [AutoPirate](/recipies/autopirate/) stack (_The only reason you **wouldn't** use SABnzbd, would be if you were using [NZBGet](/recipies/autopirate/nzbget.md) instead_), include the following in your autopirate.yml stack definition file: -```` +``` sabnzbd: image: linuxserver/sabnzbd:latest env_file : /var/data/config/autopirate/sabnzbd.env @@ -46,7 +46,7 @@ sabnzbd_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/autopirate/sonarr.md b/manuscript/recipies/autopirate/sonarr.md index 2d3cebf..820da3d 100644 --- a/manuscript/recipies/autopirate/sonarr.md +++ b/manuscript/recipies/autopirate/sonarr.md @@ -13,7 +13,7 @@ To include Sonarr in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file: -```` +``` sonarr: image: linuxserver/sonarr:latest env_file : /var/data/config/autopirate/sonarr.env @@ -45,7 +45,7 @@ sonarr_proxy: -email-domain=example.com -provider=github -authenticated-emails-file=/authenticated-emails.txt -```` +``` !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 diff --git a/manuscript/recipies/gitlab.md b/manuscript/recipies/gitlab.md index 71fd9e7..e165d2f 100644 --- a/manuscript/recipies/gitlab.md +++ b/manuscript/recipies/gitlab.md @@ -54,7 +54,7 @@ Create a docker swarm config file in docker-compose syntax (v3), something like !!! tip I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 -```` +``` version: '3' services: @@ -107,7 +107,7 @@ networks: ipam: config: - subnet: 172.16.2.0/24 -```` +``` !!! note Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](/reference/networks/) here. diff --git a/manuscript/recipies/instapy.md b/manuscript/recipies/instapy.md index d3c4dbb..e9bf071 100644 --- a/manuscript/recipies/instapy.md +++ b/manuscript/recipies/instapy.md @@ -71,10 +71,10 @@ services: Create a variation of https://github.com/timgrossmann/InstaPy/blob/master/docker_quickstart.py at /var/data/instapy/instapy.py (the file we bind-mounted in the swarm config above) Change at least the following: -```` +``` insta_username = '' insta_password = '' -```` +``` Here's an example of my config, set to like a single penguin-pic per run: diff --git a/manuscript/recipies/nextcloud.md b/manuscript/recipies/nextcloud.md index 603875c..cf71061 100644 --- a/manuscript/recipies/nextcloud.md +++ b/manuscript/recipies/nextcloud.md @@ -53,13 +53,13 @@ MYSQL_PASSWORD=set to something secure> Now create a **separate** nextcloud-db-backup.env file, to capture the environment variables necessary to perform the backup. (_If the same variables are shared with the mariadb container, they [cause issues](https://discourse.geek-kitchen.funkypenguin.co.nz/t/nextcloud-funky-penguins-geek-cookbook/254/3?u=funkypenguin) with database access_) -```` +``` # For database backup (keep 7 days daily backups) MYSQL_PWD= MYSQL_USER=root BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d -```` +``` ### Setup Docker Swarm diff --git a/manuscript/reference/openvpn.md b/manuscript/reference/openvpn.md index 69e8be2..f772b2f 100644 --- a/manuscript/reference/openvpn.md +++ b/manuscript/reference/openvpn.md @@ -10,7 +10,7 @@ In my case, I needed each docker node to connect via [OpenVPN](http://www.openvp Yes, SELinux. Install a custom policy permitting a docker container to create tun interfaces, like this: -```` +``` cat << EOF > docker-openvpn.te module docker-openvpn 1.0; @@ -27,7 +27,7 @@ EOF checkmodule -M -m -o docker-openvpn.mod docker-openvpn.te semodule_package -o docker-openvpn.pp -m docker-openvpn.mod semodule -i docker-openvpn.pp -```` +``` ## Insert the tun module @@ -35,25 +35,25 @@ Even with the SELinux policy above, I still need to insert the "tun" module into Run the following to auto-insert the tun module on boot: -```` +``` cat << EOF >> /etc/rc.d/rc.local # Insert the "tun" module so that the vpn-client container can access /dev/net/tun /sbin/modprobe tun EOF chmod 755 /etc/rc.d/rc.local -```` +``` ## Connect the VPN Finally, for each node, I exported client credentials, and SCP'd them over to the docker node, into /root/my-vpn-configs-here/. I also had to use the NET_ADMIN cap-add parameter, as illustrated below: -```` +``` docker run -d --name vpn-client \ --restart=always --cap-add=NET_ADMIN --net=host \ --device /dev/net/tun \ -v /root/my-vpn-configs-here:/vpn:z \ ekristen/openvpn-client --config /vpn/my-host-config.ovpn -```` +``` Now every time my node boots, it establishes a VPN tunnel back to my pfsense host and (_by using custom configuration directives in OpenVPN_) is assigned a static VPN IP.