mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-13 09:46:23 +00:00
Merge branch 'feature/cryptominer' into develop
This commit is contained in:
BIN
manuscript/images/cryptominer.png
Normal file
BIN
manuscript/images/cryptominer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 199 KiB |
BIN
manuscript/images/cryptominer_alarm.png
Normal file
BIN
manuscript/images/cryptominer_alarm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
BIN
manuscript/images/cryptominer_grafana.png
Normal file
BIN
manuscript/images/cryptominer_grafana.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 190 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.6 KiB |
BIN
manuscript/images/mining_rig_naked.jpg
Normal file
BIN
manuscript/images/mining_rig_naked.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 311 KiB |
BIN
manuscript/images/mining_rig_populated.jpg
Normal file
BIN
manuscript/images/mining_rig_populated.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 463 KiB |
@@ -2,36 +2,32 @@ hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and
|
||||
|
||||
# AutoPirate
|
||||
|
||||
Once the cutting edge of the "internet" (pre-world-wide-web and mosiac days), Usenet is now a murky, geeky alternative to torrents for file-sharing. However, it's **cool** geeky, especially if you're into having a fully automated media platform.
|
||||
Once the cutting edge of the "internet" (_pre-world-wide-web and mosiac days_), Usenet is now a murky, geeky alternative to torrents for file-sharing. However, it's **cool** geeky, especially if you're into having a fully automated media platform.
|
||||
|
||||
A good starter for the usenet scene is https://www.reddit.com/r/usenet/. Because it's so damn complicated, a host of automated tools exist to automate the process of finding, downloading, and managing content. The tools included in this recipe are as follows:
|
||||
|
||||

|
||||
|
||||
This recipe presents a method to combine these tools into a single swarm deployment, and make them available securely.
|
||||
|
||||
## Menu
|
||||
|
||||
Tools included in the AutoPirate stack are:
|
||||
|
||||
* **[SABnzbd](http://sabnzbd.org)** : downloads data from usenet servers based on .nzb definitions
|
||||
* **[NZBGet](https://nzbget.net/)** : downloads data from usenet servers based on .nzb definitions, but written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources (_this is a popular alternative to SABnzbd_)
|
||||
* [RTorrent](https://github.com/rakshasa/rtorrent/wiki) is a CLI-based torrent client, which when combined with [ruTorrent](https://github.com/Novik/ruTorrent) becomes a powerful and fully browser-managed torrent client.
|
||||
* **[NZBHydra](https://github.com/theotherp/nzbhydra)** : acts as a "meta-indexer", so that your downloading tools (radarr, sonarr, etc) only need to be setup for a single indexes. Also produces interesting stats on indexers, which helps when evaluating which indexers are performing well.
|
||||
* **[RTorrent](https://github.com/rakshasa/rtorrent/wiki)** is a CLI-based torrent client, which when combined with **[ruTorrent](https://github.com/Novik/ruTorrent)** becomes a powerful and fully browser-managed torrent client. (_Yes, it's not Usenet, but Sonarr/Radarr will let fulfill your watchlist using either Usenet **or** torrents, so it's worth including_)
|
||||
* **[NZBHydra](https://github.com/theotherp/nzbhydra)** : acts as a "meta-indexer", so that your downloading tools (_radarr, sonarr, etc_) only need to be setup for a single indexes. Also produces interesting stats on indexers, which helps when evaluating which indexers are performing well.
|
||||
* **[Sonarr](https://sonarr.tv)** : finds, downloads and manages TV shows
|
||||
* **[Radarr](https://radarr.video)** : finds, downloads and manages movies
|
||||
* **[Mylar](https://github.com/evilhero/mylar)** : finds, downloads and manages comic books
|
||||
* **[Headphones](https://github.com/rembo10/headphones)** : finds, downloads and manages music
|
||||
* **[Lazy Librarian](https://github.com/itsmegb/LazyLibrarian)** : finds, downloads and manages ebooks
|
||||
* **[ombi](https://github.com/tidusjar/Ombi)** : provides an interface to request additions to a plex library using the above tools
|
||||
* **[plexpy](https://github.com/JonnyWong16/plexpy)** : provides interesting stats on your plex server's usage
|
||||
* **[Ombi](https://github.com/tidusjar/Ombi)** : provides an interface to request additions to a [Plex](/recipies/plex/)/[Emby](/recipies/emby/) library using the above tools
|
||||
|
||||
This recipe presents a method to combine these tools into a single swarm deployment, and make them available securely.
|
||||
Since this recipe is so long, and so many of the tools are optional to the final result (_i.e., if you're not interested in comics, you won't want Mylar_), I've described each individual tool on its own sub-recipe page (_below_), even though most of them are deployed very similarly.
|
||||
|
||||
|
||||
!!! note
|
||||
This is a **looong** recipe. It contains 18 containers, and could easily scale to more.
|
||||
|
||||
What you'll quickly notice about this recipe is that __every__ web interface is protected by an [OAuth proxy](/reference/oauth_proxy/).
|
||||
|
||||
Why? Because these tools are developed by a handful of volunteer developers who are focused on adding features, not necessarily implementing robust security. Most users wouldn't expose these tools directly to the internet, so the tools have rudimentary (if any) access control.
|
||||
|
||||
To mitigate the risk associated with public exposure of these tools (_you're on your smartphone and you want to add a movie to your watchlist, what do you do, hotshot?_), in order to gain access to each tool you'll first need to authenticate against your given OAuth provider.
|
||||
|
||||
## Ingredients
|
||||
|
||||
1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md)
|
||||
@@ -48,7 +44,7 @@ We'll need a unique directories for each tool in the stack, bind-mounted into ou
|
||||
```
|
||||
mkdir /var/data/autopirate
|
||||
cd /var/data/autopirate
|
||||
mkdir -p {lazylibrarian,mylar,ombi,sonarr,radarr,headphones,plexpy,nzbhydra,sabnzbd,nzbget}
|
||||
mkdir -p {lazylibrarian,mylar,ombi,sonarr,radarr,headphones,plexpy,nzbhydra,sabnzbd,nzbget,rtorrent}
|
||||
```
|
||||
|
||||
Create a directory for the storage of your downloaded media, i.e., something like:
|
||||
@@ -59,9 +55,15 @@ mkdir /var/data/media
|
||||
|
||||
Create a user to "own" the above directories, and note the uid and gid of the created user. You'll need to specify the UID/GID in the environment variables passed to the container (in the example below, I used 4242 - twice the meaning of life).
|
||||
|
||||
### Setup OAUTH access
|
||||
### Secure public access
|
||||
|
||||
This is tedious. Each tool (Sonarr, Radarr, etc) to be protected by an OAuth proxy, requires unique configuration. I use github to provide my oauth, giving each tool a unique logo while I'm at it (make up your own random string for OAUTH2_PROXY_COOKIE_SECRET)
|
||||
What you'll quickly notice about this recipe is that __every__ web interface is protected by an [OAuth proxy](/reference/oauth_proxy/).
|
||||
|
||||
Why? Because these tools are developed by a handful of volunteer developers who are focused on adding features, not necessarily implementing robust security. Most users wouldn't expose these tools directly to the internet, so the tools have rudimentary (if any) access control.
|
||||
|
||||
To mitigate the risk associated with public exposure of these tools (_you're on your smartphone and you want to add a movie to your watchlist, what do you do, hotshot?_), in order to gain access to each tool you'll first need to authenticate against your given OAuth provider.
|
||||
|
||||
This is tedious, but you only have to do it once. Each tool (Sonarr, Radarr, etc) to be protected by an OAuth proxy, requires unique configuration. I use github to provide my oauth, giving each tool a unique logo while I'm at it (make up your own random string for OAUTH2PROXYCOOKIE_SECRET)
|
||||
|
||||
For each tool, create /var/data/autopirate/<tool>.env, and set the following:
|
||||
|
||||
@@ -103,473 +105,21 @@ networks:
|
||||
!!! 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.
|
||||
|
||||
What comes next, goes inbetween...
|
||||
|
||||
#### Sabnzbd
|
||||
|
||||
````
|
||||
sabnzbd:
|
||||
image: linuxserver/sabnzbd:latest
|
||||
volumes:
|
||||
- /var/data/autopirate/sabnzbd:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
sabnzbd_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/sabnzbd.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:sabnzbd.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://sabnzbd:8080
|
||||
-redirect-url=https://sabnzbd.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-email-domain=example.com
|
||||
-provider=github
|
||||
-authenticated-emails-file=/authenticated-emails.txt
|
||||
````
|
||||
|
||||
#### NZBGet
|
||||
|
||||
````
|
||||
nzbget:
|
||||
image: linuxserver/nzbget
|
||||
volumes:
|
||||
- /var/data/autopirate/nzbget:/config
|
||||
- /var/data/media:/data
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
nzbget_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/nzbget.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:nzbget.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://nzbget:6789
|
||||
-redirect-url=https://nzbget.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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=```)
|
||||
|
||||
#### RTorrent / ruTorrent
|
||||
|
||||
When using a torrent client from behind NAT (_which swarm, by nature, is_), you typically need to set a static port for inbound torrent communications. In the example below, I've set the port to 36258. You'll need to configure /var/data/autopirate/rtorrent/rtorrent/rtorrent.rc with the equivalent port.
|
||||
|
||||
```
|
||||
rtorrent:
|
||||
image: linuxserver/rutorrent
|
||||
env_file : /var/data/config/autopirate/rtorrent.env
|
||||
ports:
|
||||
- 36258:36258
|
||||
volumes:
|
||||
- /var/data/media/:/media
|
||||
- /var/data/autopirate/rtorrent:/config
|
||||
networks:
|
||||
- internal
|
||||
|
||||
rtorrent_proxy:
|
||||
image: skippy/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/rtorrent.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:rtorrent.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://rtorrent:80
|
||||
-redirect-url=https://rtorrent.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
#### Lazy Librarian
|
||||
|
||||
If you plan to use Lazy Librarian, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
lazylibrarian:
|
||||
image: linuxserver/lazylibrarian:latest
|
||||
env_file : /var/data/config/autopirate/lazylibrarian.env
|
||||
volumes:
|
||||
- /var/data/autopirate/lazylibrarian:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
lazylibrarian_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/lazylibrarian.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:lazylibrarian.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://lazylibrarian:5299
|
||||
-redirect-url=https://lazylibrarian.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
|
||||
#### Mylar
|
||||
|
||||
If you plan to use Mylar, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
mylar:
|
||||
image: linuxserver/mylar:latest
|
||||
env_file : /var/data/config/autopirate/mylar.env
|
||||
volumes:
|
||||
- /var/data/autopirate/mylar:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
-
|
||||
mylar_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/mylar.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:mylar.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://mylar:8090
|
||||
-redirect-url=https://mylar.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
#### Ombi
|
||||
|
||||
If you plan to use Ombi, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
ombi:
|
||||
image: linuxserver/ombi:latest
|
||||
env_file : /var/data/config/autopirate/ombi.env
|
||||
volumes:
|
||||
- /var/data/autopirate/ombi:/config
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
ombi_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/ombi.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:ombi.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://ombi:3579
|
||||
-redirect-url=https://ombi.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
#### Headphones
|
||||
|
||||
If you plan to use Headphones, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
headphones:
|
||||
image: linuxserver/headphones:latest
|
||||
env_file : /var/data/config/autopirate/headphones.env
|
||||
volumes:
|
||||
- /var/data/autopirate/headphones:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
headphones_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/headphones.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:headphones.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://headphones:8181
|
||||
-redirect-url=https://headphones.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
#### Plexpy
|
||||
|
||||
If you plan to use Plexpy, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
plexpy:
|
||||
image: linuxserver/plexpy:latest
|
||||
env_file : /var/data/config/autopirate/plexpy.env
|
||||
volumes:
|
||||
- /var/data/autopirate/plexpy:/config
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
plexpy_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/plexpy.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:plexpy.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://plexpy:8181
|
||||
-redirect-url=https://plexpy.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
#### Radarr
|
||||
|
||||
If you plan to use Radarr, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
radarr:
|
||||
image: linuxserver/radarr:latest
|
||||
env_file : /var/data/config/autopirate/radarr.env
|
||||
volumes:
|
||||
- /var/data/autopirate/radarr:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
radarr_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/radarr.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:radarr.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://radarr:7878
|
||||
-redirect-url=https://radarr.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
#### Sonarr
|
||||
|
||||
If you plan to use Sonarr, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
sonarr:
|
||||
image: linuxserver/sonarr:latest
|
||||
env_file : /var/data/config/autopirate/sonarr.env
|
||||
volumes:
|
||||
- /var/data/autopirate/sonarr:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
sonarr_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/sonarr.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:sonarr.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://sonarr:8989
|
||||
-redirect-url=https://sonarr.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
|
||||
#### NZBHydra
|
||||
|
||||
If you plan to use NZBHydra, add the following to your swarm config file:
|
||||
|
||||
````
|
||||
nzbhydra:
|
||||
image: linuxserver/hydra:latest
|
||||
env_file : /var/data/config/autopirate/nzbhydra.env
|
||||
volumes:
|
||||
- /var/data/autopirate/nzbhydra:/config
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
nzbhydra_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/nzbhydra.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:nzbhydra.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://nzbhydra:5075
|
||||
-redirect-url=https://nzbhydra.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
## Serving
|
||||
|
||||
### Launch Autopirate stack
|
||||
|
||||
Launch the AutoPirate stack by running ```docker stack deploy autopirate -c <path -to-docker-compose.yml>```
|
||||
|
||||
Confirm the container status by running "docker stack ps autopirate", and wait for all containers to enter the "Running" state.
|
||||
|
||||
Log into each of your new tools at its respective HTTPS URL. You'll be prompted to authenticate against your OAuth provider, and upon success, redirected to the tool's UI.
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
#### Assemble the tools..
|
||||
|
||||
Now work your way through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipies/autopirate/end/)** section:
|
||||
|
||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
||||
* [Radarr](/recipies/autopirate/radarr/)
|
||||
* [Mylar](/recipies/autopirate/mylar/)
|
||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
||||
* [Headphones](/recipies/autopirate/headphones/)
|
||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
||||
* [Ombi](/recipies/autopirate/ombi/)
|
||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
|
||||
62
manuscript/recipies/autopirate/headphones.md
Normal file
62
manuscript/recipies/autopirate/headphones.md
Normal file
@@ -0,0 +1,62 @@
|
||||
hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and organising your media 📺 🎥 🎵 📖
|
||||
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [autopirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# Headphones
|
||||
|
||||
Intro
|
||||
|
||||

|
||||
|
||||
Details
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
headphones:
|
||||
image: linuxserver/headphones:latest
|
||||
env_file : /var/data/config/autopirate/headphones.env
|
||||
volumes:
|
||||
- /var/data/autopirate/headphones:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
headphones_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/headphones.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:headphones.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://headphones:8181
|
||||
-redirect-url=https://headphones.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
62
manuscript/recipies/autopirate/lazylibrarian.md
Normal file
62
manuscript/recipies/autopirate/lazylibrarian.md
Normal file
@@ -0,0 +1,62 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [autopirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# NAME
|
||||
|
||||
Intro
|
||||
|
||||

|
||||
|
||||
Details
|
||||
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
lazylibrarian:
|
||||
image: linuxserver/lazylibrarian:latest
|
||||
env_file : /var/data/config/autopirate/lazylibrarian.env
|
||||
volumes:
|
||||
- /var/data/autopirate/lazylibrarian:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
lazylibrarian_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/lazylibrarian.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:lazylibrarian.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://lazylibrarian:5299
|
||||
-redirect-url=https://lazylibrarian.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
60
manuscript/recipies/autopirate/mylar.md
Normal file
60
manuscript/recipies/autopirate/mylar.md
Normal file
@@ -0,0 +1,60 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [autopirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# NAME
|
||||
|
||||
Intro
|
||||
|
||||

|
||||
|
||||
Details
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
mylar:
|
||||
image: linuxserver/mylar:latest
|
||||
env_file : /var/data/config/autopirate/mylar.env
|
||||
volumes:
|
||||
- /var/data/autopirate/mylar:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
-
|
||||
mylar_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/mylar.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:mylar.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://mylar:8090
|
||||
-redirect-url=https://mylar.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
58
manuscript/recipies/autopirate/nzbhydra.md
Normal file
58
manuscript/recipies/autopirate/nzbhydra.md
Normal file
@@ -0,0 +1,58 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
|
||||
#### NZBHydra
|
||||
|
||||

|
||||
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
nzbhydra:
|
||||
image: linuxserver/hydra:latest
|
||||
env_file : /var/data/config/autopirate/nzbhydra.env
|
||||
volumes:
|
||||
- /var/data/autopirate/nzbhydra:/config
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
nzbhydra_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/nzbhydra.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:nzbhydra.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://nzbhydra:5075
|
||||
-redirect-url=https://nzbhydra.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
61
manuscript/recipies/autopirate/ombi.md
Normal file
61
manuscript/recipies/autopirate/ombi.md
Normal file
@@ -0,0 +1,61 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# NAME
|
||||
|
||||
Intro
|
||||
|
||||

|
||||
|
||||
Details
|
||||
|
||||
## Ombi
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
ombi:
|
||||
image: linuxserver/ombi:latest
|
||||
env_file : /var/data/config/autopirate/ombi.env
|
||||
volumes:
|
||||
- /var/data/autopirate/ombi:/config
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
ombi_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/ombi.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:ombi.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://ombi:3579
|
||||
-redirect-url=https://ombi.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
67
manuscript/recipies/autopirate/plexpy.md
Normal file
67
manuscript/recipies/autopirate/plexpy.md
Normal file
@@ -0,0 +1,67 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# NAME
|
||||
|
||||
Intro
|
||||
|
||||

|
||||
|
||||
Details
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### Plexpy
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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
|
||||
volumes:
|
||||
- /var/data/autopirate/plexpy:/config
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
plexpy_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/plexpy.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:plexpy.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://plexpy:8181
|
||||
-redirect-url=https://plexpy.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
60
manuscript/recipies/autopirate/radarr.md
Normal file
60
manuscript/recipies/autopirate/radarr.md
Normal file
@@ -0,0 +1,60 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# Radarr
|
||||
|
||||
Intro
|
||||
|
||||

|
||||
|
||||
Details
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
radarr:
|
||||
image: linuxserver/radarr:latest
|
||||
env_file : /var/data/config/autopirate/radarr.env
|
||||
volumes:
|
||||
- /var/data/autopirate/radarr:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
radarr_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/radarr.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:radarr.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://radarr:7878
|
||||
-redirect-url=https://radarr.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
62
manuscript/recipies/autopirate/rtorrent.md
Normal file
62
manuscript/recipies/autopirate/rtorrent.md
Normal file
@@ -0,0 +1,62 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# RTorrent / ruTorrent
|
||||
|
||||

|
||||
|
||||
When using a torrent client from behind NAT (_which swarm, by nature, is_), you typically need to set a static port for inbound torrent communications. In the example below, I've set the port to 36258. You'll need to configure /var/data/autopirate/rtorrent/rtorrent/rtorrent.rc with the equivalent port.
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
|
||||
```
|
||||
rtorrent:
|
||||
image: linuxserver/rutorrent
|
||||
env_file : /var/data/config/autopirate/rtorrent.env
|
||||
ports:
|
||||
- 36258:36258
|
||||
volumes:
|
||||
- /var/data/media/:/media
|
||||
- /var/data/autopirate/rtorrent:/config
|
||||
networks:
|
||||
- internal
|
||||
|
||||
rtorrent_proxy:
|
||||
image: skippy/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/rtorrent.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:rtorrent.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://rtorrent:80
|
||||
-redirect-url=https://rtorrent.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
60
manuscript/recipies/autopirate/sonarr.md
Normal file
60
manuscript/recipies/autopirate/sonarr.md
Normal file
@@ -0,0 +1,60 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/autopirate/start/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
|
||||
# Sonarr
|
||||
|
||||

|
||||
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include NZBGet in your [AutoPirate](/recipies/autopirate/start/) stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
!!! 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``` 👍
|
||||
|
||||
````
|
||||
sonarr:
|
||||
image: linuxserver/sonarr:latest
|
||||
env_file : /var/data/config/autopirate/sonarr.env
|
||||
volumes:
|
||||
- /var/data/autopirate/sonarr:/config
|
||||
- /var/data/media:/media
|
||||
networks:
|
||||
- traefik_public
|
||||
|
||||
sonarr_proxy:
|
||||
image: zappi/oauth2_proxy
|
||||
env_file : /var/data/config/autopirate/sonarr.env
|
||||
dns_search: myswarm.example.com
|
||||
networks:
|
||||
- internal
|
||||
- traefik_public
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.frontend.rule=Host:sonarr.example.com
|
||||
- traefik.docker.network=traefik_public
|
||||
- traefik.port=4180
|
||||
volumes:
|
||||
- /var/data/config/autopirate/authenticated-emails.txt:/authenticated-emails.txt
|
||||
command: |
|
||||
-cookie-secure=false
|
||||
-upstream=http://sonarr:8989
|
||||
-redirect-url=https://sonarr.example.com
|
||||
-http-address=http://0.0.0.0:4180
|
||||
-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``` 👍
|
||||
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||
|
||||
## Your comments?
|
||||
42
manuscript/recipies/cryptominer.md
Normal file
42
manuscript/recipies/cryptominer.md
Normal file
@@ -0,0 +1,42 @@
|
||||
hero: We dig dig digga-dig dig!
|
||||
|
||||
# CryptoMiner
|
||||
|
||||
This is a diversion from my usual recipes - recently I've become interested in cryptocurrency, both in mining, and in investing.
|
||||
|
||||
I honestly didn't expect to enjoy the mining process as much as I did. Part of the enjoyment was getting my hands dirty with hardware.
|
||||
|
||||
Since a [mining rig](/recipies/cryptominer/mining-rig/) relies on hardware, we can't really use a docker swarm for this one!
|
||||
|
||||

|
||||
|
||||
This recipe isn't for everyone - if you just want to make some money from cryptocurrency, then you're better off learning to [invest](https://www.reddit.com/r/CryptoCurrency/) or [trade](https://www.reddit.com/r/CryptoMarkets/). However, if you want to (_ideally_) make money **and** you like tinkering, playing with hardware, optimising and monitoring, read on!
|
||||
|
||||
## Ingredients
|
||||
|
||||
1. Suitable system guts (_CPU, motherboard, RAM, PSU_) for your [mining rig](/recipies/cryptominer/mining-rig/)
|
||||
2. [AMD](/recipies/cryptominer/amd-gpu/) / [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs (_yes, plural, since although you **can** start with just one, you'll soon get hooked!_)
|
||||
3. A friendly operating system ([Ubuntu](https://www.ubuntu.com/)/[Debian](https://www.debian.org/)/[CentOS7](https://www.centos.org/download/)) are known to work
|
||||
4. Patience and time
|
||||
|
||||
## Preparation
|
||||
|
||||
For readability, I've split this recipe into multiple sub-recipies, which can be found below, or in the navigation links on the right-hand side:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. Ultimately I hope to move all the configuration / mining executables into docker containers, but for now, they're running on a CentOS7 host for direct access to GPUs. (Apparently it _may_ be possible to pass-thru the GPUs to docker containers, but I wanted stability first, before abstracting my hardware away from my miners)
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
169
manuscript/recipies/cryptominer/amd-gpu.md
Normal file
169
manuscript/recipies/cryptominer/amd-gpu.md
Normal file
@@ -0,0 +1,169 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# AMD GPU
|
||||
|
||||
## Ingredients
|
||||
|
||||
1. [AMD drivers](http://support.amd.com/en-us/kb-articles/Pages/Radeon-Software-for-Linux-Release-Notes.aspx) for your GPU
|
||||
2. [Linux version](https://bitcointalk.org/index.php?topic=1809527.0) of "atiflash" command
|
||||
3. A [VBIOS rom](https://anorak.tech/c/downloads) compatible with your GPU model and memory manufacturer
|
||||
|
||||
## Preparation
|
||||
|
||||
### Install the drivers
|
||||
|
||||
There are links on the AMD driver download page (_linked above_) to drivers for RHEL/CentOS6, RHEL/CentOS7, and Ubuntu 16.04. As I write this, the latest version is **amdgpu-pro-17.50-511655**.
|
||||
|
||||
!!! note
|
||||
You'll find reference online to the "blockchain" drivers. These were an earlier, [beta release](http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-Pro-Beta-Mining-Driver-for-Linux-Release-Notes.aspx) which have been superseded by version 17.50 and later. You can ignore these.
|
||||
|
||||
Uncompress the drivers package, and run the following:
|
||||
|
||||
```./amdgpu-install --opencl=legacy --headless```
|
||||
|
||||
If you have a newer (_than my 5-year-old one!_) motherboard/CPU, you can also try the following, for ROCm support (_which might allow you some more software-based overclocking powers_):
|
||||
|
||||
```./amdgpu-install --opencl=legacy,rocm --headless```
|
||||
|
||||
Reboot upon completion.
|
||||
|
||||
### Flash the BIOS
|
||||
|
||||
Yes, this sounds scary, but it's not as bad as it sounds, if you want better performance from your GPUs, you **have** to flash your GPU BIOS.
|
||||
|
||||
#### Why flash BIOS?
|
||||
|
||||
Here's my noob-level version of why:
|
||||
|
||||
1. GPU-mining performance is all about the **memory speed** of your GPU - you get the best mining from the fastest internal timings. So you want to optimize your GPU to do really fast memory work, which is not how it's designed by default.
|
||||
|
||||
2. The **processor** on your GPU sits almost idle, so you **lower** the power to the processor (_undervolt_) to save some power.
|
||||
|
||||
3. As it turns out, the factory memory timings of the RX5xx series were particularly poor.
|
||||
|
||||
As an aside, here's an illustration re why you'd **want** to flash your BIOS. Below is the mining throughput of 2 AMD RX580s I purchased together. Guess which one had its BIOS flashed?
|
||||
|
||||
```
|
||||
ETH: GPU0 30.115 Mh/s, GPU1 22.176 Mh/s
|
||||
```
|
||||
|
||||
Here's the power consumption of the two GPUs while doing the above test:
|
||||
|
||||
GPU1 (original ROM)
|
||||
```
|
||||
GFX Clocks and Power:
|
||||
1750 MHz (MCLK)
|
||||
1411 MHz (SCLK)
|
||||
144.107 W (VDDC)
|
||||
16.0 W (VDDCI)
|
||||
171.161 W (max GPU)
|
||||
172.209 W (average GPU)
|
||||
|
||||
GPU Temperature: 67 C
|
||||
GPU Load: 100 %
|
||||
```
|
||||
|
||||
GPU0 (flashed ROM)
|
||||
```
|
||||
GFX Clocks and Power:
|
||||
2050 MHz (MCLK)
|
||||
1150 MHz (SCLK)
|
||||
87.155 W (VDDC)
|
||||
16.0 W (VDDCI)
|
||||
117.152 W (max GPU)
|
||||
116.1 W (average GPU)
|
||||
|
||||
GPU Temperature: 62 C
|
||||
GPU Load: 100 %
|
||||
```
|
||||
|
||||
So, by flashing the BIOS, I gained 8 MH/s (a 36% increase), while reducing power consumption by ~40W!
|
||||
|
||||
#### How to flash AMD GPU BIOS?
|
||||
|
||||
1. Get [atiflash for linux](https://bitcointalk.org/index.php?topic=1809527.0).
|
||||
|
||||
2. Identify which card you want to flash, by running ```./atiflash -i```
|
||||
|
||||
Example output below:
|
||||
|
||||
```
|
||||
[root@kvm ~]# ./atiflash -i
|
||||
|
||||
adapter bn dn dID asic flash romsize test bios p/n
|
||||
======= == == ==== =============== ============== ======= ==== ================
|
||||
0 01 00 67DF Ellesmere M25P20/c 40000 pass 113-1E3660EU-O55
|
||||
[root@kvm ~]#
|
||||
```
|
||||
|
||||
3. Save the original, factory ROM, by running ```./atiflash -s <adapter number> <filename to save>```
|
||||
|
||||
Example below:
|
||||
```
|
||||
[root@kvm ~]# ./atiflash -s 0 rx580-4gb-299-1E366-101SA.orig.rom
|
||||
0x40000 bytes saved, checksum = 0x7FBF
|
||||
```
|
||||
|
||||
Now find an appropriate ROM to flash onto the card, and run ```atiflash -p <adatper number> <rom filename>
|
||||
|
||||
!!! tip
|
||||
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes a range of RX580-compatible ROMs, some of which I've tweaked for my own GPUs. 👍
|
||||
|
||||
|
||||
Example below:
|
||||
```
|
||||
[root@kvm ~]# ./atiflash -f -p 0 Insan1ty\ R9\ 390X\ BIOS\ v1.81/R9\ 290X/MEM\ MOD\ --\ ELPIDA/290X_ELPIDA_MOD_V1.8.rom
|
||||
Old SSID: E285
|
||||
New SSID: 9395
|
||||
Old P/N: 113-E285FOC-U005
|
||||
New P/N: 113-GRENADA_XT_C671_D5_8GB_HY_W
|
||||
Old DeviceID: 67B1
|
||||
New DeviceID: 67B0
|
||||
Old Product Name: C67111 Hawaii PRO OC GDDR5 4GB 64Mx32 300e/150m
|
||||
New Product Name: C67130 Grenada XT A0 GDDR5 8GB 128Mx32 300e/150m
|
||||
Old BIOS Version: 015.044.000.011.000000
|
||||
New BIOS Version: 015.049.000.000.000000
|
||||
Flash type: M25P10/c
|
||||
Burst size is 256
|
||||
20000/20000h bytes programmed
|
||||
20000/20000h bytes verified
|
||||
|
||||
Restart System To Complete VBIOS Update.
|
||||
[root@kvm ~]#
|
||||
```
|
||||
|
||||
Reboot the system, [hold onto your butts](https://www.youtube.com/watch?v=o0YWRXJsMyM), and wait for your newly-flashed GPU to fire up.
|
||||
|
||||
#### If it goes wrong
|
||||
|
||||
The safest way to do this is to run more than one GPU, and to flash the GPUs one-at-a-time, rebooting after each. That way, even if you make your GPU totally unresponsive, you'll still get access to your system to flash it back to the factory ROM.
|
||||
|
||||
That said, it's very unlikely that a flashed GPU won't let you boot at all though. In the (legion) cases where I overclocked my RX580 too far, I was able choose to boot into rescue mode in CentOS7 (bypassing the framebuffer / drm initialisation), and reflash my card back to its original BIOS.
|
||||
|
||||
#### Mooar tweaking! 🔧
|
||||
|
||||
If you want to tweak the BIOS yourself, download the [Polaris bios editor](https://github.com/jaschaknack/PolarisBiosEditor) and tweak away!
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your AMD (_this page_) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
3. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
4. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
5. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
6. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. My two RX580 cards (_bought alongside each other_) perform slightly differently. GPU0 works with a 2050Mhz memory clock, but GPU1 only works at 2000Mhz. Anything over 2000Mhz causes system instability. YMMV.
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
55
manuscript/recipies/cryptominer/exchange.md
Normal file
55
manuscript/recipies/cryptominer/exchange.md
Normal file
@@ -0,0 +1,55 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# Exchange
|
||||
|
||||
You may be mining a particular coin, and want to hold onto it, in the hopes of long-term growth. In that case, stick it in a [wallet](/recipies/cryptominer/wallet/) and be done with it.
|
||||
|
||||
You may also not care too much about the coin (you're mining for money, right?), in which case you want to "cash out" your coins into something you can spend.
|
||||
|
||||
In this case, you'll want to configure your mining pool to send your coin-of-choice to an **exchange**, so that you can turn it into a **different** coin, or extract it into FIAT (_oldschool, cave-man currency_).
|
||||
|
||||
## Preparation
|
||||
|
||||
### Get verified at exchanges
|
||||
|
||||
Most exchanges (Binance is currently a notable exception) require some sort of verification of your ID before they'll let you trade, or withdraw coins as FIAT.
|
||||
So, you may as well get yourself verified in anticipation (_it can take a while during periods of increased crypto-hype_).
|
||||
|
||||
Here are (_referral_) links to exchanges I've used personally:
|
||||
|
||||
* [Cryptopia](https://www.cryptopia.co.nz/Register?referrer=funkypenguin) : Trades obscure altcoins that other exchanges don't, and can withdraw to USD and NZD
|
||||
* [Binance](https://www.binance.com/?ref=15312815) : Doesn't require verification for small-time traders/miners
|
||||
* [Coinbase](https://www.coinbase.com/join/5a4d1ed0ee3de40195a695c8) : Beginner's exchange. Coins mined in Nicehash can be sent to coinbase with zero fees.
|
||||
|
||||
### Send coins to Exchanges
|
||||
|
||||
Now simply configure your mining pool (or your miner) to send your coins to your wallet's deposit address for each coin. Note that every coin has a unique wallet address.
|
||||
|
||||
!!! warning
|
||||
Don't try to send one coin (i.e., LTC) to a different coin's (i.e. BTC) wallet. You will **loose** your money and be **sad** 😞
|
||||
|
||||
## Withdraw coins to FIAT (cash)
|
||||
|
||||
Once you have enough coins in your exchange wallet, you can "trade" them into the real-world currency of your choice. For example, if you mined 100 Ella to [Cryptopia](https://www.cryptopia.co.nz/Register?referrer=funkypenguin), you could trade it for NZDT or USDT, and withdraw it to your bank account.
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to exchanges (_This page_) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
105
manuscript/recipies/cryptominer/minerhotel.md
Normal file
105
manuscript/recipies/cryptominer/minerhotel.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Minerhotel
|
||||
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
So, you have GPUs. You can mine cryptocurrency. But **what** cryptocurrency should you mine?
|
||||
|
||||
1. You could manually keep track of [whattomine](http://whattomine.com/), and launch/stop miners based on profitability/convenience, as you see fit.
|
||||
2. You can automate the process of mining the most profitable coin based on your GPUs' capabilities and the current market prices, and do better things with your free time! (_[receiving alerts](/recipies/crytominer/monitor/), of course, if anything stops working!_)
|
||||
|
||||
This recipe covers option #2 😁
|
||||
|
||||
[Miner hotel](http://minerhotel.com/) is a collection of scripts and config files to fully automate your mining across AMD or Nvidia cards.
|
||||
|
||||
|
||||
## Ingredients
|
||||
|
||||
* [Latest Minerhotel release](http://minerhotel.com/download.html) for Linux
|
||||
* Time and patience
|
||||
|
||||
## Preparation
|
||||
|
||||
### Unpack Minerhotel
|
||||
|
||||
Unpack the minerhotel release. You can technically unpack it anywhere, but this guide, and all pre-configured miners, expect an installation at /opt/minerhotel.
|
||||
|
||||
### Prepare miner.config
|
||||
|
||||
Copy /opt/minerhotel/miner.config.example to /opt/minerhotel/miner.config, and start making changes. Here's a rundown of the variables:
|
||||
|
||||
* **WALLET<WHATEVER\>** : Set these WALLET variables to your wallet addresses for all the currencies you want to mine. Your miner will fail to start without the wallet variable, but it won't confirm it's a **valid** wallet. **Now, double-check to confirm the wallet is correct, and you're not just mining coins to /dev/null, or someone else's wallet!** You can either use your [exchange](/recipes/cryptominer/exchange/) wallet address or your own [wallet](/recipes/cryptominer/wallet/).
|
||||
* **WORKER** : Set this to the name you'll use to define your miner in the various pools you mine. Some pools (_i.e. NiceHash_) auto-create workers based on whatever worked name you specify, whereas others (_Supernova.cc_) will refuse to authenticate you unless you've manually created the worker/password in their UI first.
|
||||
* **SUPRUSER** : Set this to your supernova.cc login username (**not** your worker name) (_optional, only use this if you want to use supernova.cc_)
|
||||
* **SUPRPASS** : Set this to the password you've configured within Supernova.cc for your **worker** as defined by the WORKER variable. Note that this require syou to use the **same** worker name and password across all your supernova.cc pools (_optional, only necessary if you want to use supernova.cc_)
|
||||
* **MPHUSER** : Set this to your miningpoolhub login username (_optional, only necessary if you want to use [miningpoolhub.com](https://miningpoolhub.com/)_)
|
||||
* **TBFUSER** : Set this to your theblocksfactory login username (_optional, only necessary if you want to use t[heblocksfactory.com](https://theblocksfactory.com/)_)
|
||||
* **VERTPOOLUSER/VERTPOOLPASS** : Set these to your vertpool user/password (_optional, only necessary if you want to use [vertpool.org](http://vertpool.org/)_)
|
||||
|
||||
### Install services
|
||||
|
||||
1. Run ```/opt/minerhotel/scripts/install-services.sh``` to install the necessary services for systemd
|
||||
2. Run ```/opt/minerhotel/scripts/fixmods.sh``` to correctly set the filesystem permissions for the various miner executables
|
||||
|
||||
!!! note
|
||||
fixmods.sh doesn't correctly set permissions on subdirectories, so until this is fixed, you also need to run ```chmod 755 /opt/minerhotel/bin/claymore/ethdcrminer64```
|
||||
|
||||
### Setup whattomine-linux
|
||||
|
||||
For the whattomine bot to select the most profitable coin to mine for **your** GPUs, you'll need to feed your cookie from https://whattomine.com
|
||||
|
||||
1. Start by installing [this](https://chrome.google.com/webstore/detail/cookie-inspector/jgbbilmfbammlbbhmmgaagdkbkepnijn) addon for Chrome, or [this](https://addons.mozilla.org/en-US/firefox/addon/firecookie/) addon for firefox
|
||||
2. Then visit http://whattomine.com/ and tweak settings for you GPUs, power costs, etc.
|
||||
3. Grab the cookie per the whattomine [README](http://git.minerhotel.com:3000/minerhotel/minerhotel/src/master/whattomine/README.md), and paste it (_about 2200 characters_) into /opt/minerhotel/whattomine/config.json
|
||||
4. Ensure that only the coins/miners that you **want** are enabled in config.json - delete the others, or put a dash ("-") after the ones you want to disable. Set the service names as defined in /opt/minerhotel/services/
|
||||
|
||||
### Test miners
|
||||
|
||||
Before trusting the whattomine service to automatically launch your miners, test each one first by starting them manually, and then checking their status.
|
||||
|
||||
For example, to test the **miner-amd-eth-ethhash-ethermine** miner, run
|
||||
|
||||
1. ```systemctl start miner-amd-eth-ethhash-ethermine.service``` to start the service
|
||||
2. And then watch the output by running ```journalctl -u miner-amd-eth-ethhash-ethermine -f```
|
||||
3. When you're satisfied it's working correctly (_without errors and with a decent hashrate_), stop the miner again by running ```systemctl stop miner-amd-eth-ethhash-ethermine```, and move onto testing the next one.
|
||||
|
||||
## Serving
|
||||
|
||||
### Launch whattomine
|
||||
|
||||
Finally, run ```systemctl start minerhotel-whattomine``` and then ```journalctl -u minerhotel-whattomine -f``` to watch the output. Within a minute, you should see whattomime launching the most profitable miner, as illustrated below:
|
||||
|
||||
```
|
||||
Jan 29 13:49:38 kvm.funkypenguin.co.nz whattomine-linux[2057]: 2018-01-29T13:49:38+1300 <INF> whattomine.js Loading whattominebot
|
||||
Jan 29 13:49:38 kvm.funkypenguin.co.nz whattomine-linux[2057]: 2018-01-29T13:49:38+1300 <INF> whattomine.js Starting whattominebot now.
|
||||
Jan 29 13:50:45 kvm.funkypenguin.co.nz whattomine-linux[2057]: 2018-01-29T13:50:45+1300 <INF> whattomine.js Mining Ethereum|ETH|Ethash|0.0089|0.00093|100
|
||||
Jan 29 13:50:45 kvm.funkypenguin.co.nz whattomine-linux[2057]: 2018-01-29T13:50:45+1300 <INF> whattomine.js Could not find a miner for Ubiq.
|
||||
Jan 29 13:51:39 kvm.funkypenguin.co.nz whattomine-linux[2057]: 2018-01-29T13:51:39+1300 <INF> whattomine.js Mining Ethereum|ETH|Ethash|0.0089|0.00094|100
|
||||
Jan 29 13:51:39 kvm.funkypenguin.co.nz whattomine-linux[2057]: 2018-01-29T13:51:39+1300 <INF> whattomine.js Could not find a miner for Ubiq.
|
||||
```
|
||||
|
||||
!!! note
|
||||
The messages about "Could not find miner" can be ignored, they indicate that one of the preferred coins on whattomine does not have a miner defined.
|
||||
|
||||
To make whattomine start automatically in future, run ```systemctl enable minerhotel-whattomine```
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with Miner Hotel 🏨 (_This page_)
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
58
manuscript/recipies/cryptominer/mining-pool.md
Normal file
58
manuscript/recipies/cryptominer/mining-pool.md
Normal file
@@ -0,0 +1,58 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# Mining Pools
|
||||
|
||||
You and your puny GPUs don't have a snowball's chance of mining a block on your own. Your only option is to join a mass mining conglomerate (_a mining pool_), throw in your share of the effort for a share of the reward.
|
||||
|
||||
## Preparation
|
||||
|
||||
### Setup accounts at mining pools
|
||||
|
||||
This'll save you some frustration later... Next time you're watching a movie or doing something mindless, visit http://whattomine.com/, and take note of the 10-15 most profitable coins for your GPU type(s).
|
||||
|
||||
On your [exchanges](/recipies/cryptominer/exchange/), identify the "_deposit address_" for each popular coin, and note them down for the next step.
|
||||
|
||||
!!! note
|
||||
If you're wanting to mine directly to a wallet for long-term holding, then substitute your wallet public address for this deposit address.
|
||||
|
||||
Now work your way through the following list of pools, creating an account on each one you want as you go. In the case of each pool/coin, setup your "payout address" to match your change address for the coin (above).
|
||||
|
||||
* [Mining Pool Hub](https://miningpoolhub.com/) (Lots of coins)
|
||||
* [NiceHash](https://nicehash.com) (Ethereum, Decred)
|
||||
* [suprnova](https://suprnova.cc/) - Lots of coins, but, you generally need a separate login for each pool. You _also_ need to create a worker in each pool with a common username and password, for [Minerhotel](/recipies/crytominer/minerhotel/).
|
||||
* [nanopool](https://nanopool.org/) (Ethereum, Ethereum Classic, SiaCoin, ZCash, Monero, Pascal and Electroneum)
|
||||
* [slushpool](https://slushpool.com/home/) (BTC and ZCash)
|
||||
|
||||
|
||||
## Serving
|
||||
|
||||
### Avoid fees
|
||||
|
||||
As noted by IronicBadger [here](https://www.linuxserver.io/2018/01/20/how-to-build-a-cryptocurrency-mining-rig/), the name of the game is avoiding fees where possible. Here are a few tips:
|
||||
|
||||
* [Mining Pool Hub](https://miningpoolhub.com/) is a popular pool for multiple coins, and it allows you (_for a fee_) to auto-exchange the coins you mine for coins that you actually _want_.
|
||||
* [NiceHash](https://nicehash.com) will allow you to send your earned bitcoin (_whatever you mine, they pay you in bitcoin_) to coinbase for free.
|
||||
|
||||
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to exchanges (_This page_) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
52
manuscript/recipies/cryptominer/mining-rig.md
Normal file
52
manuscript/recipies/cryptominer/mining-rig.md
Normal file
@@ -0,0 +1,52 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# Mining Rig
|
||||
|
||||
## Hardware
|
||||
|
||||
You can surely [find](https://www.reddit.com/r/gpumining/) a better tutorial on how to build a mining rig than this one. However, to summarise what I've learned:
|
||||
|
||||
1. You want a beefy power supply, with lots of PCI-e 8pin and 6pin cables.
|
||||
2. You need 1 x PCI express (_PCI-e_) port per GPU
|
||||
3. You don't need powerful CPU or much RAM - the GPUs do all the mining work. My current guts (_minus the PSU_) are 5 years old.
|
||||
|
||||
## Do I need a open-air rig?
|
||||
|
||||
Initially, no. You can use any old PC chassis. But as soon as you want more than one GPU, you're going to start to run into cooling problems.
|
||||
|
||||
You don't need anything fancy. Here's a photo of the rig my wife built me:
|
||||
|
||||

|
||||
|
||||
I recommend this design (_with the board with little holes in it_) - it takes up more space, but I have more room to place extra components (_PSUs, hard drives, etc_), as illustrated below:
|
||||
|
||||

|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your mining rig 💻 (This page)
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. Pro-tip : You're going to spend some time overclocking. Which is going to make your mining host unstable.
|
||||
|
||||
Yes. It's the ultimate _#firstworldproblem_, but if you have a means to remotely reboot your host, use it! You can thank me later.
|
||||
|
||||
(_I hooked up a remote-controlled outlet to my rig, so that I can power-cycle it without having to crawl under the desk!_)
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
93
manuscript/recipies/cryptominer/monitor.md
Normal file
93
manuscript/recipies/cryptominer/monitor.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# Monitor
|
||||
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
So, you're a miner! But if you're not **actively** mining, are you still a miner? This page details how to **measure** your mining activity, and how to raise an alert when a profit-affecting issue affects your miners.
|
||||
|
||||
## Ingredients
|
||||
|
||||
1. [InfluxDB+Grafana](https://www.funkypenguin.co.nz/note/adding-custom-data-to-influxdb-and-grafana/) instance, for visualising data
|
||||
2. [Icinga](https://www.icinga.com/), [Nagios](https://www.nagios.org/) etc for alarming on GPU/miner status
|
||||
3. [Asi MPM](https://www.asimpm.com/) (iOS) for monitoring your miner/pool status
|
||||
4. [Altpocket](https://altpocket.io/?ref=ilVqdeWbAv), [CoinTracking](https://cointracking.info?ref=F560640), etc for managing your crypto-asset portfolio (_referral links_)
|
||||
|
||||
## Preparation
|
||||
|
||||
### Visualising performance
|
||||
|
||||

|
||||
|
||||
Since [Minerhotel](/recipies/crytominer/minerhotel/) switches currency based on what's most profitable in the moment, it's hard to gauge the impact of changes (overclocking, tweaking, mining pools) over time.
|
||||
|
||||
I hacked up a bash script which grabs performance data from the output of the miners, and throws it into an InfluxDB database, which can then be visualized using Grafana.
|
||||
|
||||
Here's an early version of the script (_it's since been updated for clockspeed and power usage too_):
|
||||
|
||||
<script src="https://gist.github.com/funkypenguin/5ec0581389be20ea6512e4c2bafb2a89.js"></script>
|
||||
|
||||
!!! tip
|
||||
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes up-to-date versions of the InfluxDB /Grafana script mentioned above, as well as pre-setup Grafana graphs, so that patrons can simply "_git pull_" and start monitoring 👍
|
||||
|
||||
|
||||
### Alarming on failure
|
||||
|
||||

|
||||
|
||||
GPU mining can fail in subtle ways. On occasion, I've tweaked my GPUs to the point that the miner will start, but one or all GPUs will report a zero hash rate. I wanted to be alerted to such profit-affecting issues, so I wrote a bash script (_intended to be executed by NRPE from Icinga, Nagios, etc_).
|
||||
|
||||
The script tests the output of the currently active miner, and ensures the GPUs have a valid hashrate.
|
||||
|
||||
|
||||
|
||||
!!! tip
|
||||
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes up-to-date versions of the Icinga scripts mentioned above, so that patrons can simply "_git pull_" and start monitoring 👍
|
||||
|
||||
### Monitoring pool/miner status
|
||||
|
||||
I've tried several iOS apps for monitoring my performance across various. The most useful app I've found thus far is [Asi MPM](https://www.asimpm.com/). It requires a little upfront effort to configure for all your coins/pools, but thereafter it's a handy way to keep tabs on your new obsession!
|
||||
|
||||
### Track your portfolio
|
||||
|
||||
Now that you've got your coins happily cha-chinging into you [wallets](/recipies/cryptominer/wallet/) (_and potentially various [exchanges](/recipies/cryptominer/exchange/)_), you'll want to monitor the performance of your portfolio over time.
|
||||
|
||||
#### Web Apps
|
||||
|
||||
There's a detailed breakdown of porfolio-management apps [here](https://www.cryptostache.com/2017/11/10/keeping-track-cryptocurrency-portfolio-best-apps-2017/).
|
||||
|
||||
Personally, I use:
|
||||
|
||||
* [Altpocket](https://altpocket.io/?ref=ilVqdeWbAv) (A free web app which can auto-sync with certain exchanges and wallets)
|
||||
* [CoinTracking](https://cointracking.info?ref=F560640) - The top crypto-portfolio manager, by far. But it's expensive when you get to > 200 trades. You get what you pay for ;)
|
||||
|
||||
#### Mobile Apps
|
||||
|
||||
I've found the following iOS apps to be useful in tracking my portfolio (_really more for investing than mining though, since portfolio tracking requires a manual entry for each trade_)
|
||||
|
||||
* [Delta](https://itunes.apple.com/us/app/delta-crypto-ico-portfolio/id1288676542?mt=8) (iOS) - Track your portfolio (losses/gains) and alert you to changes in the coins you watch
|
||||
* [Bitscreener](https://itunes.apple.com/app/apple-store/id1240849311?mt=8) )(iOS) - Track multiple currencies on a watchlist, and quickly view news/discussion per coin
|
||||
|
||||
!!! note
|
||||
Some of the links above are referral links. I get some goodies when you use them.
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. Monitor your empire :heartbeat: (_this page_)
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
1. Ultimately I hope to move all the configuration / mining executables into docker containers, but for now, they're running on a CentOS7 host for direct access to GPUs. (_Apparently it **may** be possible to pass-thru the GPUs to docker containers, but I wanted stability first, before abstracting my hardware away from my miners_)
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
164
manuscript/recipies/cryptominer/nvidia-gpu.md
Normal file
164
manuscript/recipies/cryptominer/nvidia-gpu.md
Normal file
@@ -0,0 +1,164 @@
|
||||
# NVidia GPU
|
||||
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
## Ingredients
|
||||
|
||||
1. [Nvidia drivers](http://www.nvidia.com/Download/driverResults.aspx/104284/en-us) for your GPU
|
||||
2. Some form of X11 GUI preconfigured on your linux host (yes, it's a PITA, but it's necessary for overclocking)
|
||||
|
||||
## Preparation
|
||||
|
||||
### Install kernel-devel and gcc
|
||||
|
||||
The nVidia drivers will need the kernel development packages for your OS installed, as well as gcc. Run the following (for CentOS - there will be an Ubuntu equivalent):
|
||||
|
||||
```yum install kernel-devel-$(uname -r) gcc```
|
||||
|
||||
### Remove nouveau
|
||||
|
||||
Your host probably already includes nouveau, free/libre drivers for Nvidia graphics card. These won't cut it for mining, so blacklist them to avoid conflict with the dirty, proprietary Nvidia drivers:
|
||||
|
||||
```
|
||||
echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist.conf
|
||||
dracut /boot/initramfs-$(uname -r).img $(uname -r) --force
|
||||
systemctl disable gdm
|
||||
reboot
|
||||
```
|
||||
|
||||
### Install Nvidia drivers
|
||||
|
||||
Download and uncompress the [Nvidia drivers](http://www.nvidia.com/Download/driverResults.aspx/104284/en-us), and execute the installation as root, with a command something like this:
|
||||
|
||||
```bash NVIDIA-Linux-x86_64-352.30.run```
|
||||
|
||||
Update your X11 config by running:
|
||||
|
||||
```
|
||||
nvidia-xconfig
|
||||
```
|
||||
|
||||
### Enable GUID
|
||||
|
||||
```
|
||||
systemctl enable gdm
|
||||
ln -s '/usr/lib/systemd/system/gdm.service' '/etc/systemd/system/display-manager.service'
|
||||
reboot
|
||||
```
|
||||
|
||||
## Overclock
|
||||
|
||||
### Preparation
|
||||
|
||||
!!! warning
|
||||
Like overclocking itself, this process is still a work in progress. YMMV.
|
||||
|
||||
Of course, you want to squeeze the optimal performance out of your GPU. This is where the X11 environment is required - to adjust GPU clock/memory settings, you need to use the ```nvidia-settings``` command, which (_stupidly_) **requires** an X11 display, even if you're just using the command line.
|
||||
|
||||
The following command: configures X11 for a "fake" screen so that X11 will run, even on a headless machine managed by SSH only, and ensures that the PCI bus ID of every NVidia device is added to the xorg.conf file (to avoid errors about "_(EE) no screens found(EE)_")
|
||||
|
||||
```
|
||||
nvidia-xconfig -a --allow-empty-initial-configuration --cool-bits=28 --use-display-device="DFP-0" --connected-monitor="DFP-0" --enable-all-gpus --separate-x-screens
|
||||
```
|
||||
|
||||
!!! note
|
||||
The script below was taken from https://github.com/Cyclenerd/ethereum_nvidia_miner
|
||||
|
||||
Make a directory for your overclocking script. Mine happens to be /root/overclock/, but use whatever you like.
|
||||
|
||||
Create settings.conf as follows:
|
||||
|
||||
```
|
||||
# Known to work with Nvidia 1080ti, but probably not optimal. It's an eternal work-in-progress.
|
||||
MY_WATT="200"
|
||||
MY_CLOCK="100"
|
||||
MY_MEM="400"
|
||||
MY_FAN="60"
|
||||
```
|
||||
|
||||
Then create nvidia-overclock.sh as follows:
|
||||
|
||||
```
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# nvidia-overclock.sh
|
||||
# Author: Nils Knieling - https://github.com/Cyclenerd/ethereum_nvidia_miner
|
||||
#
|
||||
# Overclocking with nvidia-settings
|
||||
#
|
||||
|
||||
# Load global settings settings.conf
|
||||
if ! source ~/overclock/settings.conf; then
|
||||
echo "FAILURE: Can not load global settings 'settings.conf'"
|
||||
exit 9
|
||||
fi
|
||||
|
||||
export DISPLAY=:0
|
||||
|
||||
# Graphics card 1 to 6
|
||||
for MY_DEVICE in {0..5}
|
||||
do
|
||||
# Check if card exists
|
||||
if nvidia-smi -i $MY_DEVICE >> /dev/null 2>&1; then
|
||||
nvidia-settings -a "[gpu:$MY_DEVICE]/GPUPowerMizerMode=1"
|
||||
# Fan speed
|
||||
nvidia-settings -a "[gpu:$MY_DEVICE]/GPUFanControlState=1"
|
||||
nvidia-settings -a "[fan:$MY_DEVICE]/GPUTargetFanSpeed=$MY_FAN"
|
||||
# Graphics clock
|
||||
nvidia-settings -a "[gpu:$MY_DEVICE]/GPUGraphicsClockOffset[3]=$MY_CLOCK"
|
||||
# Memory clock
|
||||
nvidia-settings -a "[gpu:$MY_DEVICE]/GPUMemoryTransferRateOffset[3]=$MY_MEM"
|
||||
# Set watt/powerlimit. This is also set in miner.sh at autostart.
|
||||
sudo nvidia-smi -i "$MY_DEVICE" -pl "$MY_WATT"
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Done"
|
||||
echo
|
||||
```
|
||||
|
||||
### Start your engine!
|
||||
|
||||
**Once** you've got X11 running correctly, execute ,/nvidia-overclock.sh, and you should see something like the following:
|
||||
|
||||
```
|
||||
[root@kvm overclock]# ./nvidia-overclock.sh
|
||||
Attribute 'GPUPowerMizerMode' (kvm.funkypenguin.co.nz:0[gpu:0]) assigned value 1.
|
||||
Attribute 'GPUFanControlState' (kvm.funkypenguin.co.nz:0[gpu:0]) assigned value 1.
|
||||
Attribute 'GPUTargetFanSpeed' (kvm.funkypenguin.co.nz:0[fan:0]) assigned value 60.
|
||||
Attribute 'GPUGraphicsClockOffset' (kvm.funkypenguin.co.nz:0[gpu:0]) assigned value 100.
|
||||
Attribute 'GPUMemoryTransferRateOffset' (kvm.funkypenguin.co.nz:0[gpu:0]) assigned value 400.
|
||||
|
||||
Power limit for GPU 00000000:04:00.0 was set to 150.00 W from 150.00 W.
|
||||
All done.
|
||||
|
||||
Done
|
||||
|
||||
[root@kvm overclock]#
|
||||
```
|
||||
|
||||
Play with changing your settings.conf file until you break it, and then go back one revision :)
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or Nvidia (_this page_) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
28
manuscript/recipies/cryptominer/profit.md
Normal file
28
manuscript/recipies/cryptominer/profit.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Profit! 💰
|
||||
|
||||
Well, that's it really. You're a cryptominer. Welcome to the party.
|
||||
|
||||
## Your adventure has only just begun!
|
||||
|
||||
To recap, you did all this:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. Profit! (_This page_) 💰
|
||||
|
||||
|
||||
## What next?
|
||||
|
||||
Get in touch and share your experience - there's a special [discord](https://discord.gg/Y9aUhrj) channel if you're the IM type, else post a comment/thread at the [kitchen](http://discourse.geek-kitchen.funkypenguin.co.nz/) :)
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
41
manuscript/recipies/cryptominer/wallet.md
Normal file
41
manuscript/recipies/cryptominer/wallet.md
Normal file
@@ -0,0 +1,41 @@
|
||||
!!! warning
|
||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||
|
||||
# Wallet
|
||||
|
||||
You may be mining a particular coin, and want to hold onto it, in the hopes of long-term growth. The safest place to stick that coin, therefore, is an a wallet.
|
||||
|
||||
## Preparation
|
||||
|
||||
### Get your wallets
|
||||
|
||||
Your favorite coin probably has a link to various desktop wallets on their website. All you have to do is download the wallet to your desktop, fire it up, and then **backup your public/private key somewhere safe**.
|
||||
|
||||
### Wallets I use
|
||||
|
||||
I mine most of my coins to Exchanges, but I do have the following wallets:
|
||||
|
||||
* [Jaxx](https://itunes.apple.com/nz/app/jaxx-blockchain-wallet/id1084514516?mt=8) on my iPhone for popular coins (BTC, ETH, etc)
|
||||
* Eleos wallet for [ZClassic](https://zclassic.org/)
|
||||
|
||||
|
||||
## Continue your adventure
|
||||
|
||||
Now, continue to the next stage of your grand mining adventure:
|
||||
|
||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or wallets (_This page_) 💹
|
||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
||||
|
||||
|
||||
## Chef's Notes
|
||||
|
||||
### Tip your waiter (donate) 👏
|
||||
|
||||
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||
|
||||
### Your comments? 💬
|
||||
14
mkdocs.yml
14
mkdocs.yml
@@ -40,12 +40,24 @@ pages:
|
||||
- Kanboard: recipies/kanboard.md
|
||||
- Miniflux: recipies/miniflux.md
|
||||
- Gollum: recipies/gollum.md
|
||||
- AutoPirate: recipies/autopirate.md
|
||||
# Not completed yet in this branch
|
||||
# - AutoPirate: recipies/autopirate.md
|
||||
- NextCloud: recipies/nextcloud.md
|
||||
- Plex: recipies/plex.md
|
||||
- Emby: recipies/emby.md
|
||||
- Home Assistant: recipies/homeassistant.md
|
||||
- Calibre-Web: recipies/calibre-web.md
|
||||
- CryptoMiner:
|
||||
- Start: recipies/cryptominer.md
|
||||
- Mining Rig: recipies/cryptominer/mining-rig.md
|
||||
- AMD GPU: recipies/cryptominer/amd-gpu.md
|
||||
- NVidia GPU: recipies/cryptominer/nvidia-gpu.md
|
||||
- Mining Pools : recipies/cryptominer/mining-pool.md
|
||||
- Wallets : recipies/cryptominer/wallet.md
|
||||
- Exchanges: recipies/cryptominer/exchange.md
|
||||
- Minerhotel: recipies/cryptominer/minerhotel.md
|
||||
- Monitoring: recipies/cryptominer/monitor.md
|
||||
- Profit!: recipies/cryptominer/profit.md
|
||||
- Menu:
|
||||
- Ghost: recipies/ghost.md
|
||||
- GitLab: recipies/gitlab.md
|
||||
|
||||
Reference in New Issue
Block a user