Skip to content

Commit

Permalink
npm: use v2 (truenas#1061)
Browse files Browse the repository at this point in the history
* npm: use v2

* fmt
  • Loading branch information
stavros-k authored Nov 29, 2024
1 parent a4c5434 commit 9cf165c
Show file tree
Hide file tree
Showing 69 changed files with 5,910 additions and 1,381 deletions.
6 changes: 3 additions & 3 deletions ix-dev/community/nginx-proxy-manager/app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ keywords:
- reverse
- nginx
- proxy
lib_version: 1.1.7
lib_version_hash: d05e43e25b7dc1736be6cc1efa4b9255368aa346e3e7a4350a38440f29b73186
lib_version: 2.0.29
lib_version_hash: 3c2dd83143491fdfc23e5e13de9db0aa79bb7846a2b7c32a76a479e334c54590
maintainers:
- email: [email protected]
name: truenas
Expand All @@ -44,4 +44,4 @@ sources:
- https://hub.docker.com/r/jc21/nginx-proxy-manager
title: Nginx Proxy Manager
train: community
version: 1.0.27
version: 1.1.0
8 changes: 4 additions & 4 deletions ix-dev/community/nginx-proxy-manager/ix_values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ consts:
data_path: /data
notes_body: |
## Default Username and Password
The First time you log into the Nginx Proxy Manager UI, use the following credentials.
You will be prompted to change them on first login.
You will be prompted to change them on first login.
Username: `[email protected]`
Password: `changeme`
- Username: `[email protected]`
- Password: `changeme`
39 changes: 39 additions & 0 deletions ix-dev/community/nginx-proxy-manager/questions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ groups:
description: Configure Network for Nginx Proxy Manager
- name: Storage Configuration
description: Configure Storage for Nginx Proxy Manager
- name: Labels Configuration
description: Configure Labels for Nginx Proxy Manager
- name: Resources Configuration
description: Configure Resources for Nginx Proxy Manager

Expand Down Expand Up @@ -442,6 +444,43 @@ questions:
description: The domain to use for the SMB share.
schema:
type: string
- variable: labels
label: ""
group: Labels Configuration
schema:
type: list
default: []
items:
- variable: label
label: Label
schema:
type: dict
attrs:
- variable: key
label: Key
schema:
type: string
required: true
- variable: value
label: Value
schema:
type: string
required: true
- variable: containers
label: Containers
description: Containers where the label should be applied
schema:
type: list
items:
- variable: container
label: Container
schema:
type: string
required: true
enum:
- value: npm
description: npm

- variable: resources
label: ""
group: Resources Configuration
Expand Down
74 changes: 24 additions & 50 deletions ix-dev/community/nginx-proxy-manager/templates/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,57 +1,31 @@
{% set tpl = ix_lib.base.render.Render(values) %}

{# Stores storage items that contains info for volumes, vol mounts, perms dirs and perms mounts #}
{% set storage_items = namespace(items=[]) %}
{# Stores the top level volumes #}
{% set volumes = namespace(items={}) %}
{# Stores the container volume mounts #}
{% set volume_mounts = namespace(items=[]) %}
{% set c1 = tpl.add_container(values.consts.npm_container_name, "image") %}

{% do storage_items.items.append(ix_lib.base.storage.storage_item(data=dict(values.storage.data, **{"mount_path": values.consts.data_path}), values=values)) %}
{% do storage_items.items.append(ix_lib.base.storage.storage_item(data=dict(values.storage.certs, **{"mount_path": "/etc/letsencrypt"}), values=values)) %}
{% do storage_items.items.append(ix_lib.base.storage.storage_item(data={"type":"anonymous", "mount_path": "/tmp"})) %}
{% do c1.add_caps(["SETUID", "SETGID", "CHOWN", "FOWNER", "DAC_OVERRIDE"]) %}
{% do c1.healthcheck.set_custom_test("/bin/check-health") %}

{% for store in values.storage.additional_storage %}
{% do storage_items.items.append(ix_lib.base.storage.storage_item(data=store, values=values)) %}
{% endfor %}
{% do c1.environment.add_env("DISABLE_IPV6", "true") %}
{% do c1.environment.add_env("DB_SQLITE_FILE", "%s/database.sqlite"|format(values.consts.data_path)) %}
{% do c1.environment.add_user_envs(values.npm.additional_envs) %}

{# Add each item to the above lists #}
{% for item in storage_items.items %}
{% if item.vol and volumes.items.update(item.vol) %}{% endif %}
{% if item.vol_mount and volume_mounts.items.append(item.vol_mount) %}{% endif %}
{% endfor %}
{% if not values.network.host_network %}
{% do c1.ports.add_port(values.network.web_port, 81) %}
{% do c1.ports.add_port(values.network.https_port, 443) %}
{% do c1.ports.add_port(values.network.http_port, 80) %}

{# Containers #}
services:
{{ values.consts.npm_container_name }}:
image: {{ ix_lib.base.utils.get_image(images=values.images, name="image") }}
restart: unless-stopped
deploy:
resources: {{ ix_lib.base.resources.resources(values.resources) | tojson }}
devices: {{ ix_lib.base.resources.get_devices(values.resources) | tojson }}
{% set caps=ix_lib.base.security.get_caps(add=["SETUID", "SETGID", "CHOWN", "FOWNER", "DAC_OVERRIDE"]) %}
cap_add: {{ caps.add | tojson }}
cap_drop: {{ caps.drop | tojson }}
security_opt: {{ ix_lib.base.security.get_sec_opts() | tojson }}
{% if values.network.dns_opts %}
dns_opt: {{ ix_lib.base.network.dns_opts(values.network.dns_opts) | tojson }}
{% endif %}
healthcheck: {{ ix_lib.base.healthchecks.check_health("/bin/check-health") | tojson }}
environment: {{ ix_lib.base.environment.envs(app={
"DISABLE_IPV6": true,
"DB_SQLITE_FILE": "%s/database.sqlite"|format(values.consts.data_path),
}, user=values.npm.additional_envs, values=values) | tojson }}
ports:
- {{ ix_lib.base.ports.get_port(port={"target": 80, "published": values.network.http_port}) | tojson }}
- {{ ix_lib.base.ports.get_port(port={"target": 81, "published": values.network.web_port}) | tojson }}
- {{ ix_lib.base.ports.get_port(port={"target": 443, "published": values.network.https_port}) | tojson }}
{% for port in values.network.additional_ports %}
- {{ ix_lib.base.ports.get_port(port={"target": port.target, "published": port.published, "protocol": port.protocol}) | tojson }}
{% endfor %}
volumes: {{ volume_mounts.items | tojson }}

{% if volumes.items %}
volumes: {{ volumes.items | tojson }}
{% for port in values.network.additional_ports %}
{% do c1.ports.add_port(port.published, port.target, {"protocol": port.protocol}) %}
{% endfor %}
{% endif %}

x-portals: {{ ix_lib.base.metadata.get_portals([{"port": values.network.web_port}]) | tojson }}
x-notes: {{ ix_lib.base.metadata.get_notes("Nginx Proxy Manager", body=values.consts.notes_body) | tojson }}
{% do c1.add_storage("/etc/letsencrypt", values.storage.certs) %}
{% do c1.add_storage(values.consts.data_path, values.storage.data) %}
{% for store in values.storage.additional_storage %}
{% do c1.add_storage(store.mount_path, store) %}
{% endfor %}

{% do tpl.portals.add_portal({"port": values.network.web_port}) %}
{% do tpl.notes.set_body(values.consts.notes_body) %}

{{ tpl.render() | tojson }}

This file was deleted.

This file was deleted.

Loading

0 comments on commit 9cf165c

Please sign in to comment.