Skip to content

Commit

Permalink
Merge branch 'ansible-nas-flaresolverr' of https://github.com/darshit…
Browse files Browse the repository at this point in the history
  • Loading branch information
davestephens committed Jun 11, 2024
2 parents a555389 + f54bfca commit e21725d
Show file tree
Hide file tree
Showing 9 changed files with 129 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ If you have a spare domain name you can configure applications to be accessible
* [Emby](https://emby.media/) - Media streaming and management
* [ESPHome](https://esphome.io/) - ESP8266/ESP32 programming and management for home automation
* [Firefly III](https://firefly-iii.org/) - Free and open source personal finance manager
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) - FlareSolverr is a proxy server to bypass Cloudflare and DDoS-GUARD protection
* [Fresh RSS](https://freshrss.org/) - Self-hosted RSS feed aggregator like Leed or Kriss Feed
* [get_iplayer](https://github.com/get-iplayer/get_iplayer) - download programmes from BBC iplayer
* [Gitea](https://gitea.io/en-us/) - Simple self-hosted GitHub clone
Expand Down
4 changes: 4 additions & 0 deletions nas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@
tags:
- firefly

- role: flaresolverr
tags:
- flaresolverr

- role: freshrss
tags:
- freshrss
Expand Down
19 changes: 19 additions & 0 deletions roles/flaresolverr/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
flaresolverr_enabled: false
flaresolverr_available_externally: false

# directories
flaresolverr_config_directory: "{{ docker_home }}/flaresolverr/config"

# uid / gid
flaresolverr_user_id: "0"
flaresolverr_group_id: "0"

# network
flaresolverr_port: "8191"

# specs
flaresolverr_memory: 200m

# docker
flaresolverr_container_name: flaresolverr
11 changes: 11 additions & 0 deletions roles/flaresolverr/docs/flaresolverr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# FlareSolverr

Homepage: <https://github.com/FlareSolverr/FlareSolverr>

FlareSolverr is a proxy server to bypass Cloudflare and DDoS-GUARD protection. Some Jackett indexers require it.

## Usage

Set `flaresolverr_enabled: true` in your `inventories/<your_inventory>/nas.yml` file.

The FlareSolverr API can be accessed from <http://ansible_nas_host_or_ip:8191>.
6 changes: 6 additions & 0 deletions roles/flaresolverr/molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
provisioner:
inventory:
group_vars:
all:
flaresolverr_enabled: true
10 changes: 10 additions & 0 deletions roles/flaresolverr/molecule/default/side_effect.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
- name: Stop
hosts: all
become: true
tasks:
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
ansible.builtin.include_role:
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
vars:
flaresolverr_enabled: false
18 changes: 18 additions & 0 deletions roles/flaresolverr/molecule/default/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
- name: Verify
hosts: all
gather_facts: false
tasks:
- ansible.builtin.include_vars:
file: ../../defaults/main.yml

- name: Get container state
community.docker.docker_container_info:
name: "{{ flaresolverr_container_name }}"
register: result

- name: Check FlareSolverr is running
ansible.builtin.assert:
that:
- result.container['State']['Status'] == "running"
- result.container['State']['Restarting'] == false
18 changes: 18 additions & 0 deletions roles/flaresolverr/molecule/default/verify_stopped.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
- name: Verify
hosts: all
gather_facts: false
tasks:
- ansible.builtin.include_vars:
file: ../../defaults/main.yml

- name: Try and stop and remove FlareSolverr
community.docker.docker_container:
name: "{{ flaresolverr_container_name }}"
state: absent
register: result

- name: Check FlareSolverr is stopped
ansible.builtin.assert:
that:
- not result.changed
42 changes: 42 additions & 0 deletions roles/flaresolverr/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
- name: Start FlareSolverr
block:
- name: Create FlareSolverr Directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
# mode: 0755
with_items:
- "{{ docker_home }}/flaresolverr/config"

- name: FlareSolverr Docker Container
community.docker.docker_container:
name: "{{ flaresolverr_container_name }}"
image: flaresolverr/flaresolverr
pull: true
volumes:
- "{{ flaresolverr_config_directory }}:/config:rw"
ports:
- "{{ flaresolverr_port }}:5050"
env:
TZ: "{{ ansible_nas_timezone }}"
PUID: "{{ flaresolverr_user_id }}"
PGID: "{{ flaresolverr_group_id }}"
restart_policy: unless-stopped
memory: "{{ flaresolverr_memory }}"
labels:
traefik.enable: "{{ flaresolverr_available_externally | string }}"
traefik.http.routers.flaresolverr.rule: "Host(`flaresolverr.{{ ansible_nas_domain }}`)"
traefik.http.routers.flaresolverr.tls.certresolver: "letsencrypt"
traefik.http.routers.flaresolverr.tls.domains[0].main: "{{ ansible_nas_domain }}"
traefik.http.routers.flaresolverr.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
traefik.http.services.flaresolverr.loadbalancer.server.port: "8191"
when: flaresolverr_enabled is true

- name: Stop FlareSolverr
block:
- name: Stop FlareSolverr
community.docker.docker_container:
name: "{{ flaresolverr_container_name }}"
state: absent
when: flaresolverr_enabled is false

0 comments on commit e21725d

Please sign in to comment.