From 7247285feca5836a2ad5f17f4094c5c54a002ba5 Mon Sep 17 00:00:00 2001 From: redbeardymcgee Date: Sun, 16 Feb 2025 17:53:58 -0600 Subject: [PATCH] move mamstack to branch --- pods/README.md | 34 ++ pods/mamstack/caddy/Caddyfile | 7 + pods/mamstack/caddy/Containerfile | 8 + pods/mamstack/caddy/caddy.build | 4 + pods/mamstack/caddy/caddy.container | 21 ++ pods/mamstack/caddy/config.volume | 2 + pods/mamstack/caddy/data.volume | 2 + pods/mamstack/gluetun/gluetun.container | 33 ++ pods/mamstack/mamstack.pod | 10 + pods/mamstack/pointspend/pointspend.container | 27 ++ pods/mamstack/qbit_manage/config.volume | 3 + pods/mamstack/qbit_manage/config.yml | 322 ++++++++++++++++++ .../qbit_manage/qbit_manage.container | 24 ++ pods/mamstack/qbit_manage/qbit_manage.env | 19 ++ ...rent-port-forward-gluetun-server.container | 26 ++ .../qbittorrent/qbittorrent.container | 27 ++ pods/mamstack/seedboxapi/seedboxapi.container | 28 ++ 17 files changed, 597 insertions(+) create mode 100644 pods/README.md create mode 100644 pods/mamstack/caddy/Caddyfile create mode 100644 pods/mamstack/caddy/Containerfile create mode 100644 pods/mamstack/caddy/caddy.build create mode 100644 pods/mamstack/caddy/caddy.container create mode 100644 pods/mamstack/caddy/config.volume create mode 100644 pods/mamstack/caddy/data.volume create mode 100644 pods/mamstack/gluetun/gluetun.container create mode 100644 pods/mamstack/mamstack.pod create mode 100644 pods/mamstack/pointspend/pointspend.container create mode 100644 pods/mamstack/qbit_manage/config.volume create mode 100644 pods/mamstack/qbit_manage/config.yml create mode 100644 pods/mamstack/qbit_manage/qbit_manage.container create mode 100644 pods/mamstack/qbit_manage/qbit_manage.env create mode 100644 pods/mamstack/qbittorrent-port-forward-gluetun-server/qbittorrent-port-forward-gluetun-server.container create mode 100644 pods/mamstack/qbittorrent/qbittorrent.container create mode 100644 pods/mamstack/seedboxapi/seedboxapi.container diff --git a/pods/README.md b/pods/README.md new file mode 100644 index 0000000..327cf3c --- /dev/null +++ b/pods/README.md @@ -0,0 +1,34 @@ +## Weechat + +> [!WARNING] +> If you have permissions issue trying to persist data > [Potential +> permissions issue +> fix](https://github.com/weechat/weechat-container/issues/10#issuecomment-2472077317) + +### Attach and configure + +> [!TIP] +> Detach key sequence: `ctrl-p` `ctrl-q`. + +```bash +ssh -t $host machinectl shell $ctuser@ podman attach weechat +/set irc.look.smart_filter on +/set irc.server_default.msg_part "" +/set irc.server_default.msg_quit "" +/set irc.ctcp.clientinfo "" +/set irc.ctcp.finger "" +/set irc.ctcp.source "" +/set irc.ctcp.time "" +/set irc.ctcp.userinfo "" +/set irc.ctcp.version "" +/set irc.ctcp.ping "" +/plugin unload xfer +/set weechat.plugin.autoload "*,!xfer" +/filter add irc_smart * irc_smart_filter * +/server add mam irc.myanonamouse.net/6697 +/set irc.server.mam.username $irc_username +/set irc.server_default.autojoin_dynamic on +/set irc.server.mam.nicks "$irc_nick1,$irc_nick2" +/set irc.server.mam.autoconnect on +/connect mam +``` diff --git a/pods/mamstack/caddy/Caddyfile b/pods/mamstack/caddy/Caddyfile new file mode 100644 index 0000000..88d6f0a --- /dev/null +++ b/pods/mamstack/caddy/Caddyfile @@ -0,0 +1,7 @@ +{ + acme_dns $provider $api_key +} + +qb.$domain.$tld { + reverse_proxy localhost:8080 +} diff --git a/pods/mamstack/caddy/Containerfile b/pods/mamstack/caddy/Containerfile new file mode 100644 index 0000000..fabb25c --- /dev/null +++ b/pods/mamstack/caddy/Containerfile @@ -0,0 +1,8 @@ +FROM docker.io/caddy:$version-builder AS builder + +RUN xcaddy build \ + --with github.com/caddy-dns/$module + +FROM docker.io/caddy:$version + +COPY --from=builder /usr/bin/caddy /usr/bin/caddy diff --git a/pods/mamstack/caddy/caddy.build b/pods/mamstack/caddy/caddy.build new file mode 100644 index 0000000..f93de3d --- /dev/null +++ b/pods/mamstack/caddy/caddy.build @@ -0,0 +1,4 @@ +[Build] +ImageTag=localhost/caddy-njalla +SetWorkingDirectory=unit + diff --git a/pods/mamstack/caddy/caddy.container b/pods/mamstack/caddy/caddy.container new file mode 100644 index 0000000..dbcb3bd --- /dev/null +++ b/pods/mamstack/caddy/caddy.container @@ -0,0 +1,21 @@ +[Unit] +Description=Reverse proxy + +[Service] +Restart=on-failure + +[Install] +WantedBy=default.target + +[Container] +Image=caddy.build +ContainerName=caddy +HostName=caddy +Pod=MAMstack.pod +AutoUpdate=registry + +Volume=caddy-config:/config +Volume=caddy-data:/data + +Volume=./Caddyfile:/etc/caddy/Caddyfile + diff --git a/pods/mamstack/caddy/config.volume b/pods/mamstack/caddy/config.volume new file mode 100644 index 0000000..f395d99 --- /dev/null +++ b/pods/mamstack/caddy/config.volume @@ -0,0 +1,2 @@ +[Volume] +VolumeName=caddy-config diff --git a/pods/mamstack/caddy/data.volume b/pods/mamstack/caddy/data.volume new file mode 100644 index 0000000..2535edc --- /dev/null +++ b/pods/mamstack/caddy/data.volume @@ -0,0 +1,2 @@ +[Volume] +VolumeName=caddy-data diff --git a/pods/mamstack/gluetun/gluetun.container b/pods/mamstack/gluetun/gluetun.container new file mode 100644 index 0000000..bd8bef7 --- /dev/null +++ b/pods/mamstack/gluetun/gluetun.container @@ -0,0 +1,33 @@ +[Unit] +Description=gluetun VPN + +[Service] +Restart=on-failure +TimeoutStartSec=900 + +[Install] +WantedBy=default.target + +[Container] +Image=docker.io/qmcgaw/gluetun:$gluetun_version +ContainerName=gluetun +HostName=gluetun +AddCapability=NET_ADMIN +AddDevice=/dev/net/tun:/dev/net/tun +Pod=MAMstack.pod +AutoUpdate=registry + +Volume=./config.toml:/gluetun/auth/config.toml + +Environment=TZ=$timezone +Environment=UPDATER_PERIOD=24h +Environment=UPDATER_VPN_SERVICE_PROVIDERS=protonvpn +Environment=VPN_SERVICE_PROVIDER=protonvpn +# The trailing `+pmp` is for port forwarding +Environment=OPENVPN_USER=${openvpn_user}+pmp +Environment=OPENVPN_PASSWORD=$openvpn_password +Environment=OPENVPN_CIPHERS=aes-256-gcm +Environment=SERVER_COUNTRIES=$countries +Environment=VPN_PORT_FORWARDING=on +Environment=FIREWALL_DEBUG=on + diff --git a/pods/mamstack/mamstack.pod b/pods/mamstack/mamstack.pod new file mode 100644 index 0000000..8ed8145 --- /dev/null +++ b/pods/mamstack/mamstack.pod @@ -0,0 +1,10 @@ +[Pod] +PodName=MAMstack + +Network=mamstack.network + +PublishPort=80 +PublishPort=443 +PublishPort=443:443/udp + +Volume= diff --git a/pods/mamstack/pointspend/pointspend.container b/pods/mamstack/pointspend/pointspend.container new file mode 100644 index 0000000..0568488 --- /dev/null +++ b/pods/mamstack/pointspend/pointspend.container @@ -0,0 +1,27 @@ +[Unit] +Description=Bonus points spender +After=qbittorrent.service +After=gluetun.service +BindsTo=gluetun.service +BindsTo=qbittorrent.service + +[Service] +Restart=on-failure +TimeoutStartSec=900 + +[Install] +WantedBy=default.target + +[Container] +# TODO: Is `latest` safe for this container? +Image=docker.io/myanonamouse/pointspend:latest +ContainerName=pointspend +HostName=pointspend +Pod=MAMstack.pod +AutoUpdate=registry + +Environment=BUFFER=1000 +Environment=WEDGEHOURS=0 +Environment=VIP=1 + +Secret=mam_id,type=env,target=MAMID diff --git a/pods/mamstack/qbit_manage/config.volume b/pods/mamstack/qbit_manage/config.volume new file mode 100644 index 0000000..23b6c24 --- /dev/null +++ b/pods/mamstack/qbit_manage/config.volume @@ -0,0 +1,3 @@ +[Volume] +VolumeName=qbit_manage-config + diff --git a/pods/mamstack/qbit_manage/config.yml b/pods/mamstack/qbit_manage/config.yml new file mode 100644 index 0000000..168ec4e --- /dev/null +++ b/pods/mamstack/qbit_manage/config.yml @@ -0,0 +1,322 @@ +# This is an example configuration file that documents all the options. +# It will need to be modified for your specific use case. +# Please refer to the link below for more details on how to set up the configuration file +# https://github.com/StuffAnThings/qbit_manage/wiki/Config-Setup + +commands: + # The commands defined below will IGNORE any commands used in command line and docker env variables. + dry_run: True + cross_seed: False + recheck: False + cat_update: False + tag_update: False + rem_unregistered: False + tag_tracker_error: False + rem_orphaned: False + tag_nohardlinks: False + share_limits: False + skip_qb_version_check: False + skip_cleanup: False + +qbt: + # qBittorrent parameters + host: "localhost:8080" + user: "username" + pass: "password" + +settings: + force_auto_tmm: False # Will force qBittorrent to enable Automatic Torrent Management for each torrent. + force_auto_tmm_ignore_tags: #Torrents with these tags will be ignored when force_auto_tmm is enabled. + - cross-seed + - Upload + tracker_error_tag: issue # Will set the tag of any torrents that do not have a working tracker. + nohardlinks_tag: noHL # Will set the tag of any torrents with no hardlinks. + share_limits_tag: ~share_limit # Will add this tag when applying share limits to provide an easy way to filter torrents by share limit group/priority for each torrent + share_limits_min_seeding_time_tag: MinSeedTimeNotReached # Tag to be added to torrents that have not yet reached the minimum seeding time + share_limits_min_num_seeds_tag: MinSeedsNotMet # Tag to be added to torrents that have not yet reached the minimum number of seeds + share_limits_last_active_tag: LastActiveLimitNotReached # Tag to be added to torrents that have not yet reached the last active limit + cross_seed_tag: cross-seed # Will set the tag of any torrents that are added by cross-seed command + cat_filter_completed: True # Filters for completed torrents only when running cat_update command + share_limits_filter_completed: True # Filters for completed torrents only when running share_limits command + tag_nohardlinks_filter_completed: True # Filters for completed torrents only when running tag_nohardlinks command + cat_update_all: True # Checks and updates all torrent categories if set to True when running cat_update command, otherwise only update torrents that are uncategorized + disable_qbt_default_share_limits: True # Allows QBM to handle share limits by disabling qBittorrents default Share limits. Only active when the share_limits command is set to True + +directory: + # Do not remove these + # Cross-seed var: # Output directory of cross-seed + # root_dir var: # Root downloads directory used to check for orphaned files, noHL, and RecycleBin. + # remote_dir var: # Path of docker host mapping of root_dir. + # remote_dir must be set if you're running qbit_manage locally and qBittorrent/cross_seed is in a docker + # remote_dir should not be set if qbit_manage is running in a container + # recycle_bin var: # Path of the RecycleBin folder. Default location is set to remote_dir/.RecycleBin + # torrents_dir var: # Path of the your qbittorrent torrents directory. Required for `save_torrents` attribute in recyclebin + # orphaned_dir var: # Path of the the Orphaned Data folder. This is similar to RecycleBin, but only for orphaned data. + cross_seed: "/your/path/here/" + root_dir: "/data/torrents/" + remote_dir: "/mnt/user/data/torrents/" + recycle_bin: "/mnt/user/data/torrents/.RecycleBin" + torrents_dir: "/qbittorrent/data/BT_backup" + orphaned_dir: "/data/torrents/orphaned_data" + +cat: + # Category & Path Parameters + # All save paths in qbittorent must be populated below. + # If you want to leave a save_path as uncategorized you can use the key 'Uncategorized' as the name of the category. + # : # Path of your save directory. + movies: "/data/torrents/Movies" + tv: "/data/torrents/TV" + +cat_change: + # This moves all the torrents from one category to another category. This executes on --cat-update + # WARNING: if the paths are different and Default Torrent Management Mode is set to automatic the files could be moved !!! + # : + Radarr-HD.cross-seed: movies-hd + Radarr-UHD.cross-seed: movies-uhd + movies-hd.cross-seed: movies-hd + movies-uhd.cross-seed: movies-uhd + +tracker: + # Mandatory + # Tag Parameters + # : # This is the keyword in the tracker url. You can define multiple tracker urls by splitting with `|` delimiter + # Set tag name. Can be a list of tags or a single tag + # tag: + # Set the category based on tracker URL. This category option takes priority over the category defined by save directory + # cat: + # Set this to the notifiarr react name. This is used to add indexer reactions to the notifications sent by Notifiarr + # notifiarr: + animebytes.tv: + tag: AnimeBytes + notifiarr: animebytes + avistaz: + tag: + - Avistaz + - tag2 + - tag3 + notifiarr: avistaz + beyond-hd: + tag: [Beyond-HD, tag2, tag3] + cat: movies + notifiarr: beyondhd + blutopia: + tag: Blutopia + notifiarr: blutopia + cartoonchaos: + tag: CartoonChaos + digitalcore: + tag: DigitalCore + notifiarr: digitalcore + gazellegames: + tag: GGn + hdts: + tag: HDTorrents + landof.tv: + tag: BroadcasTheNet + notifiarr: broadcasthenet + myanonamouse: + tag: MaM + passthepopcorn: + tag: PassThePopcorn + notifiarr: passthepopcorn + privatehd: + tag: PrivateHD + notifiarr: + torrentdb: + tag: TorrentDB + notifiarr: torrentdb + torrentleech|tleechreload: + tag: TorrentLeech + notifiarr: torrentleech + tv-vault: + tag: TV-Vault + # The "other" key is a special keyword and if defined will tag any other trackers that don't match the above trackers into this tag + other: + tag: other + +nohardlinks: + # Tag Movies/Series that are not hard linked outside the root directory + # Mandatory to fill out directory parameter above to use this function (root_dir/remote_dir) + # This variable should be set to your category name of your completed movies/completed series in qbit. Acceptable variable can be any category you would like to tag if there are no hardlinks found + movies-completed-4k: + series-completed-4k: + movies-completed: + # exclude_tags var: Will exclude torrents with any of the following tags when searching through the category. + exclude_tags: + - Beyond-HD + - AnimeBytes + - MaM + # ignore_root_dir var: Will ignore any hardlinks detected in the same root_dir (Default True). + ignore_root_dir: true + # Can have additional categories set with separate ratio/seeding times defined. + series-completed: + # exclude_tags var: Will exclude torrents with any of the following tags when searching through the category. + exclude_tags: + - Beyond-HD + - BroadcasTheNet + # ignore_root_dir var: Will ignore any hardlinks detected in the same root_dir (Default True). + ignore_root_dir: true + +share_limits: + # Control how torrent share limits are set depending on the priority of your grouping + # Each torrent will be matched with the share limit group with the highest priority that meets the group filter criteria. + # Each torrent can only be matched with one share limit group + # This variable is mandatory and is a text defining the name of your grouping. This can be any string you want + noHL: + # priority: # This is the priority of your grouping. The lower the number the higher the priority + priority: 1 + # include_all_tags: # Filter the group based on one or more tags. Multiple include_all_tags are checked with an AND condition + # All tags defined here must be present in the torrent for it to be included in this group + include_all_tags: + - noHL + # include_any_tags: # Filter the group based on one or more tags. Multiple include_any_tags are checked with an OR condition + # Any tags defined here must be present in the torrent for it to be included in this group + include_any_tags: + - noHL + # exclude_all_tags: # Filter by excluding one or more tags. Multiple exclude_all_tags are checked with an AND condition + # This is useful to combine with the category filter to exclude one or more tags from an entire category + # All tags defined here must be present in the torrent for it to be excluded in this group + exclude_all_tags: + - Beyond-HD + # exclude_any_tags: # Filter by excluding one or more tags. Multiple exclude_any_tags are checked with an OR condition + # This is useful to combine with the category filter to exclude one or more tags from an entire category + # Any tags defined here must be present in the torrent for it to be excluded in this group + exclude_any_tags: + - Beyond-HD + # categories: # Filter by including one or more categories. Multiple categories are checked with an OR condition + # Since one torrent can only be associated with a single category, multiple categories are checked with an OR condition + categories: + - RadarrComplete + - SonarrComplete + # max_ratio : Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading and may be cleaned up / removed if the minimums have been met. + # Will default to -1 (no limit) if not specified for the group. + max_ratio: 5.0 + # max_seeding_time : Will set the torrent Maximum seeding time until torrent is stopped from seeding/uploading and may be cleaned up / removed if the minimums have been met. + # See Some examples of valid time expressions (https://github.com/onegreyonewhite/pytimeparse2) + # 32m, 2h32m, 3d2h32m, 1w3d2h32m + # Will default to -1 (no limit) if not specified for the group. (Max value of 1 year (525600 minutes)) + max_seeding_time: 90d + # min_seeding_time : Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes). + # This should only be set if you are using this in conjunction with max_seeding_time and max_ratio. If you are not setting a max_ratio, then use max_seeding_time instead. + # If the torrent has not yet reached this minimum seeding time, it will change the share limits back to no limits and resume the torrent to continue seeding. + # See Some examples of valid time expressions (https://github.com/onegreyonewhite/pytimeparse2) + # 32m, 2h32m, 3d2h32m, 1w3d2h32m + # Will default to 0 if not specified for the group. + min_seeding_time: 30d + # last_active : Will prevent torrent deletion by cleanup variable if torrent has been active within the last x minutes. + # If the torrent has been active within the last x minutes, it will change the share limits back to no limits and resume the torrent to continue seeding. + # See Some examples of valid time expressions (https://github.com/onegreyonewhite/pytimeparse2) + # 32m, 2h32m, 3d2h32m, 1w3d2h32m + # Will default to 0 if not specified for the group. + last_active: 30d + # Limit Upload Speed : Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit) + limit_upload_speed: 0 + # Enable Group Upload Speed : Upload speed limits are applied at the group level. This will take limit_upload_speed defined and divide it equally among the number of torrents in the group. + enable_group_upload_speed: false + # cleanup : WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits (max time OR max ratio) + cleanup: false + # resume_torrent_after_change : This variable will resume your torrent after changing share limits. Default is true + resume_torrent_after_change: true + # add_group_to_tag : This adds your grouping as a tag with a prefix defined in settings . Default is true + # Example: A grouping defined as noHL will have a tag set to ~share_limit.noHL (if using the default prefix) + add_group_to_tag: true + # min_num_seeds : Will prevent torrent deletion by cleanup variable if the number of seeds is less than the value set here. + # If the torrent has less number of seeds than the min_num_seeds, the share limits will be changed back to no limits and resume the torrent to continue seeding. + # Will default to 0 if not specified for the group. + min_num_seeds: 0 + # custom_tag : Apply a custom tag name for this particular group. **WARNING (This tag MUST be unique as it will be used to determine share limits. Please ensure it does not overlap with any other tags in qbt)** + custom_tag: sharelimits_noHL + cross-seed: + priority: 2 + include_all_tags: + - cross-seed + max_seeding_time: 7d + cleanup: false + PTP: + priority: 3 + include_all_tags: + - PassThePopcorn + max_ratio: 2.0 + max_seeding_time: 90d + cleanup: false + default: + priority: 999 + max_ratio: -1 + max_seeding_time: -1 + cleanup: false + +recyclebin: + # Recycle Bin method of deletion will move files into the recycle bin (Located in /root_dir/.RecycleBin) instead of directly deleting them in qbit + # By default the Recycle Bin will be emptied on every run of the qbit_manage script if empty_after_x_days is defined. + enabled: true + # empty_after_x_days var: + # Will automatically remove all files and folders in recycle bin after x days. (Checks every script run) + # If this variable is not defined it, the RecycleBin will never be emptied. + # WARNING: Setting this variable to 0 will delete all files immediately upon script run! + empty_after_x_days: 60 + # save_torrents var: + # If this option is set to true you MUST fill out the torrents_dir in the directory attribute. + # This will save a copy of your .torrent and .fastresume file in the recycle bin before deleting it from qbittorrent + save_torrents: true + # split_by_category var: + # This will split the recycle bin folder by the save path defined in the `cat` attribute + # and add the base folder name of the recycle bin that was defined in the `recycle_bin` sub-attribute under directory. + split_by_category: false + +orphaned: + # Orphaned files are those in the root_dir download directory that are not referenced by any active torrents. + # Will automatically remove all files and folders in orphaned data after x days. (Checks every script run) + # If this variable is not defined it, the orphaned data will never be emptied. + # WARNING: Setting this variable to 0 will delete all files immediately upon script run! + empty_after_x_days: 60 + # File patterns that will not be considered orphaned files. Handy for generated files that aren't part of the torrent but belong with the torrent's files + exclude_patterns: + - "**/.DS_Store" + - "**/Thumbs.db" + - "**/@eaDir" + - "/data/torrents/temp/**" + - "**/*.!qB" + - "**/*_unpackerred" + # Set your desired threshold for the maximum number of orphaned files qbm will delete in a single run. (-1 to disable safeguards) + # This will help reduce the number of accidental large amount orphaned deletions in a single run + # WARNING: Setting this variable to -1 will not safeguard against any deletions + max_orphaned_files_to_delete: 50 + +apprise: + # Apprise integration with webhooks + # Leave Empty/Blank to disable + # Mandatory to fill out the url of your apprise API endpoint + api_url: http://apprise-api:8000 + # Mandatory to fill out the notification url/urls based on the notification services provided by apprise. https://github.com/caronc/apprise/wiki + notify_url: + +notifiarr: + # Notifiarr integration with webhooks + # Leave Empty/Blank to disable + # Mandatory to fill out API Key + apikey: #################################### + # Set to a unique value (could be your username on notifiarr for example) + instance: + +webhooks: + # Webhook notifications: + # Possible values: + # Set value to notifiarr if using notifiarr integration + # Set value to apprise if using apprise integration + # Set value to a valid webhook URL + # Set value to nothing (leave Empty/Blank) to disable + error: https://mywebhookurl.com/qbt_manage + run_start: notifiarr + run_end: apprise + function: + cross_seed: https://mywebhookurl.com/qbt_manage + recheck: notifiarr + cat_update: apprise + tag_update: notifiarr + rem_unregistered: notifiarr + tag_tracker_error: notifiarr + rem_orphaned: notifiarr + tag_nohardlinks: notifiarr + share_limits: notifiarr + cleanup_dirs: notifiarr + diff --git a/pods/mamstack/qbit_manage/qbit_manage.container b/pods/mamstack/qbit_manage/qbit_manage.container new file mode 100644 index 0000000..07ea279 --- /dev/null +++ b/pods/mamstack/qbit_manage/qbit_manage.container @@ -0,0 +1,24 @@ +[Unit] +Description=qBittorrent manager +Wants=qbittorrent.service +After=qbittorrent.service + +[Service] +Restart=on-failure +TimeoutStartSec=900 + +[Install] +WantedBy=default.target + +[Container] +Image=ghcr.io/stuffanthings/qbit_manage:latest +ContainerName=qbit_manage +HostName=qbit_manage +Pod=MAMstack.pod +AutoUpdate=registry + +Volume=qbit_manage-config:/config +Volume=/volumes/books/qbittorrent/downloads:/data/torrents +Volume=qbittorrent-config:/qbittorrent + +EnvironmentFile=qbit_manage.env diff --git a/pods/mamstack/qbit_manage/qbit_manage.env b/pods/mamstack/qbit_manage/qbit_manage.env new file mode 100644 index 0000000..330818c --- /dev/null +++ b/pods/mamstack/qbit_manage/qbit_manage.env @@ -0,0 +1,19 @@ +QBT_RUN=false +QBT_SCHEDULE=1440 +QBT_CONFIG=config.yml +QBT_LOGFILE=activity.log +QBT_CROSS_SEED=false +QBT_RECHECK=false +QBT_CAT_UPDATE=false +QBT_TAG_UPDATE=false +QBT_REM_UNREGISTERED=false +QBT_REM_ORPHANED=false +QBT_TAG_TRACKER_ERROR=false +QBT_TAG_NOHARDLINKS=false +QBT_SHARE_LIMITS=false +QBT_SKIP_CLEANUP=false +QBT_DRY_RUN=false +QBT_LOG_LEVEL=INFO +QBT_DIVIDER== +QBT_WIDTH=100 + diff --git a/pods/mamstack/qbittorrent-port-forward-gluetun-server/qbittorrent-port-forward-gluetun-server.container b/pods/mamstack/qbittorrent-port-forward-gluetun-server/qbittorrent-port-forward-gluetun-server.container new file mode 100644 index 0000000..643c2f7 --- /dev/null +++ b/pods/mamstack/qbittorrent-port-forward-gluetun-server/qbittorrent-port-forward-gluetun-server.container @@ -0,0 +1,26 @@ +[Unit] +Description=Port forward updater for qbittorrent over gluetun +After=gluetun.service +After=qbittorrent.service + +[Service] +Restart=on-failure +TimeoutStartSec=900 + +[Install] +WantedBy=default.target + +[Container] +# TODO: Replace this with one that has tags +# Probably have to repack my own +Image=docker.io/mjmeli/qbittorrent-port-forward-gluetun-server:latest +ContainerName=qbittorrent-port-forward-gluetun-server +HostName=qbittorrent-port-forward-gluetun-server +Pod=MAMstack +AutoUpdate=registry + +Environment=QBT_USERNAME=$qbt_user +Environment=QBT_ADDR=http://localhost:8080 +Environment=GTN_ADDR=http://localhost:8000 + +Secret=qbt_pw,type=env,target=QBT_PASSWORD diff --git a/pods/mamstack/qbittorrent/qbittorrent.container b/pods/mamstack/qbittorrent/qbittorrent.container new file mode 100644 index 0000000..1b4811b --- /dev/null +++ b/pods/mamstack/qbittorrent/qbittorrent.container @@ -0,0 +1,27 @@ +[Unit] +Description=qbittorrent client +After=gluetun.service +BindsTo=gluetun.service + +[Service] +Restart=on-failure +TimeoutStartSec=900 + +[Install] +WantedBy=default.target + +[Container] +Image=docker.io/qbittorrentofficial/qbittorrent-nox:$qbt_version +ContainerName=qbittorrent +HostName=qbittorrent +AutoUpdate=registry + +Network= + +Volume=/volumes/books/qbittorrent/config:/config +Volume=/volumes/books/qbittorrent/downloads:/downloads + +Environment=QBT_LEGAL_NOTICE=confirm +Environment=QBT_VERSION=$qbt_version +Environment=TZ=$timezone + diff --git a/pods/mamstack/seedboxapi/seedboxapi.container b/pods/mamstack/seedboxapi/seedboxapi.container new file mode 100644 index 0000000..e41b4c9 --- /dev/null +++ b/pods/mamstack/seedboxapi/seedboxapi.container @@ -0,0 +1,28 @@ +[Unit] +Description=Update qbittorrent session IP for tracker +After=qbittorrent.service +After=gluetun.service +BindsTo=gluetun.service +BindsTo=qbittorrent.service + +[Service] +Restart=on-failure +TimeoutStartSec=900 + +[Install] +WantedBy=default.target + +[Container] +# TODO: Is `latest` safe for this container? +Image=docker.io/myanonamouse/seedboxapi:latest +ContainerName=seedboxapi +HostName=seedboxapi +Pod=MAMstack.pod +AutoUpdate=registry + +Volume=/volumes/books/seedboxapi/config:/config + +Environment=DEBUG=1 +Environment=interval=1 + +Secret=mam_id,type=env,target=mam_id