Updates
This commit is contained in:
132
hoarder.tf
Normal file
132
hoarder.tf
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
data "docker_registry_image" "hoarder" {
|
||||||
|
name = "ghcr.io/hoarder-app/hoarder"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "hoarder" {
|
||||||
|
name = data.docker_registry_image.hoarder.name
|
||||||
|
pull_triggers = [data.docker_registry_image.hoarder.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
data "docker_registry_image" "hoarder-chrome" {
|
||||||
|
name = "gcr.io/zenika-hub/alpine-chrome:123"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "hoarder-chrome" {
|
||||||
|
name = data.docker_registry_image.hoarder-chrome.name
|
||||||
|
pull_triggers = [data.docker_registry_image.hoarder-chrome.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
data "docker_registry_image" "hoarder-meilisearch" {
|
||||||
|
name = "getmeili/meilisearch:v1.6"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "hoarder-meilisearch" {
|
||||||
|
name = data.docker_registry_image.hoarder-meilisearch.name
|
||||||
|
pull_triggers = [data.docker_registry_image.hoarder-meilisearch.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "hoarder" {
|
||||||
|
name = "hoarder"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "hoarder" {
|
||||||
|
image = docker_image.hoarder.image_id
|
||||||
|
name = "hoarder"
|
||||||
|
hostname = "hoarder"
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"MEILI_ADDR=http://meilisearch:7700",
|
||||||
|
"BROWSER_WEB_URL=http://chrome:9222",
|
||||||
|
"HOARDER_VERSION=release",
|
||||||
|
"NEXTAUTH_SECRET=j&natTM8L8u$&z",
|
||||||
|
"MEILI_MASTER_KEY=GM4ysMegcCoZUOrVxglbWzGJeN9O7CMWnZIaG9c_MSQ",
|
||||||
|
"NEXTAUTH_URL=https://hoarder.rescla.me",
|
||||||
|
"DATA_DIR=/data",
|
||||||
|
"DISABLE_SIGNUPS=true",
|
||||||
|
"OPENAI_API_KEY=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"
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/data"
|
||||||
|
source = "/share/appdata/hoarder"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.145"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.hoarder.name
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource "docker_container" "hoarder-chrome" {
|
||||||
|
image = docker_image.hoarder-chrome.image_id
|
||||||
|
name = "hoarder-chrome"
|
||||||
|
hostname = "chrome"
|
||||||
|
|
||||||
|
command = [
|
||||||
|
"--no-sandbox",
|
||||||
|
"--disable-gpu",
|
||||||
|
"--disable-dev-shm-usage",
|
||||||
|
"--remote-debugging-address=0.0.0.0",
|
||||||
|
"--remote-debugging-port=9222",
|
||||||
|
"--hide-scrollbars"
|
||||||
|
]
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.hoarder.name
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource "docker_container" "hoarder-meilisearch" {
|
||||||
|
image = docker_image.hoarder-meilisearch.image_id
|
||||||
|
name = "hoarder-meilisearch"
|
||||||
|
hostname = "meilisearch"
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"MEILI_ADDR=http://meilisearch:7700",
|
||||||
|
"HOARDER_VERSION=release",
|
||||||
|
"NEXTAUTH_SECRET=j&natTM8L8u$&z",
|
||||||
|
"MEILI_MASTER_KEY=GM4ysMegcCoZUOrVxglbWzGJeN9O7CMWnZIaG9c_MSQ",
|
||||||
|
"NEXTAUTH_URL=https://hoarder.rescla.me",
|
||||||
|
"MEILI_NO_ANALYTICS=true"
|
||||||
|
]
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/meili_data"
|
||||||
|
source = "/share/appdata/hoarder-meilisearch"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.hoarder.name
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
40
playbook.yml
Normal file
40
playbook.yml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
- hosts: localhost
|
||||||
|
vars:
|
||||||
|
external_host: "hoarder.rescla.me"
|
||||||
|
internal_url: "192.168.2.145:3000"
|
||||||
|
tmp_path: ".tmp"
|
||||||
|
ftp_server: "192.168.2.64"
|
||||||
|
ftp_username: "ansible"
|
||||||
|
ftp_password: "3YffU5iTGQMyx87Vesu"
|
||||||
|
remote_file_path: "/appdata/nginx-lb/user_conf.d/{{ external_host }}.conf"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Ensures the {{ tmp_path }} folder exists
|
||||||
|
file:
|
||||||
|
path: "{{ tmp_path }}"
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Generate nginx configuration from template
|
||||||
|
template:
|
||||||
|
src: templates/nginx-site.conf.j2
|
||||||
|
dest: "{{ tmp_path }}/nginx.conf"
|
||||||
|
|
||||||
|
- name: Upload nginx config file via FTP
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: curl -k -T "{{ tmp_path }}/nginx.conf" "ftp://{{ ftp_username }}:{{ ftp_password }}@{{ ftp_server }}{{ remote_file_path }}"
|
||||||
|
|
||||||
|
- name: Clean up generated config
|
||||||
|
file:
|
||||||
|
path: "{{ tmp_path }}/nginx.conf"
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Reload nginx config
|
||||||
|
ansible.builtin.command:
|
||||||
|
argv:
|
||||||
|
- docker
|
||||||
|
- --tlsverify
|
||||||
|
- -H=192.168.2.64:2376
|
||||||
|
- --tlscacert=.docker\ca.pem
|
||||||
|
- --tlscert=.docker\cert.pem
|
||||||
|
- --tlskey=.docker\key.pem
|
||||||
|
- kill --signal=HUP nginx-lb
|
||||||
27
templates/nginx-site.conf.j2
Normal file
27
templates/nginx-site.conf.j2
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
listen [::]:443 ssl;
|
||||||
|
server_name {{ external_host }};
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/{{ external_host }}/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/{{ external_host }}/privkey.pem;
|
||||||
|
ssl_trusted_certificate /etc/letsencrypt/live/{{ external_host }}/fullchain.pem;
|
||||||
|
|
||||||
|
include /etc/nginx/config/tls.conf;
|
||||||
|
include /etc/nginx/config/local.conf;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header X-Forwarded-Host $http_host;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_max_temp_file_size 0;
|
||||||
|
proxy_pass http://{{ internal_url }};
|
||||||
|
proxy_redirect http:// https://;
|
||||||
|
|
||||||
|
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
}
|
||||||
|
}
|
||||||
1242
terraform.tfstate
1242
terraform.tfstate
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user