mirror of
https://github.com/mother-of-all-self-hosting/mash-playbook
synced 2024-11-10 06:14:17 +00:00
Merge branch 'main' into prometheus
This commit is contained in:
commit
80c07322e1
11 changed files with 455 additions and 10 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -3,3 +3,9 @@
|
|||
# ignore roles pulled by ansible-galaxy
|
||||
/roles/galaxy/*
|
||||
!/roles/galaxy/.gitkeep
|
||||
|
||||
# ignores vscode file
|
||||
.vscode
|
||||
|
||||
# ingores macos files
|
||||
.DS_Store
|
||||
|
|
157
bin/feeds.py
Normal file
157
bin/feeds.py
Normal file
|
@ -0,0 +1,157 @@
|
|||
import os
|
||||
import sys
|
||||
import argparse
|
||||
from urllib.parse import urlparse
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
parser = argparse.ArgumentParser(description='Extracts release feeds from roles')
|
||||
parser.add_argument('root_dir', help='Root dir which to traverse recursively for defaults/main.yml roles files')
|
||||
parser.add_argument('action', help='Pass "check" to list roles with missing feeds or "dump" to dump an OPML file')
|
||||
args = parser.parse_args()
|
||||
if args.action not in ['check', 'dump', 'hookshot']:
|
||||
sys.exit('Error: possible arguments are "check" or "dump"')
|
||||
|
||||
excluded_paths = [
|
||||
# appservice-kakaotalk defines a Project URL, but that Gitea repository does not have an Atom/RSS feed.
|
||||
# It doesn't have any tags anyway.
|
||||
'./upstream/roles/custom/matrix-bridge-appservice-kakaotalk/defaults',
|
||||
]
|
||||
project_source_url_str = '# Project source code URL:'
|
||||
|
||||
def get_roles_files_from_dir(root_dir):
|
||||
file_paths = []
|
||||
for dir_name, sub_dur_list, file_list in os.walk(root_dir):
|
||||
for file_name in file_list:
|
||||
if not dir_name.endswith('defaults') or file_name != 'main.yml':
|
||||
continue
|
||||
if dir_name in excluded_paths:
|
||||
continue
|
||||
file_paths.append(os.path.join(dir_name, file_name))
|
||||
return file_paths
|
||||
|
||||
def get_git_repos_from_files(file_paths, break_on_missing_repos=False):
|
||||
git_repos = {}
|
||||
missing_repos = []
|
||||
|
||||
for file in file_paths:
|
||||
file_lines = open(file, 'r').readlines()
|
||||
found_project_repo = False
|
||||
for line in file_lines:
|
||||
project_repo_val = ''
|
||||
if project_source_url_str in line:
|
||||
# extract the value from a line like this:
|
||||
# Project source code URL: https://github.com/mautrix/signal
|
||||
project_repo_val = line.split(project_source_url_str)[1].strip()
|
||||
if not validate_url(project_repo_val):
|
||||
print('Invalid url for line ', line)
|
||||
break
|
||||
if project_repo_val != '':
|
||||
if file not in git_repos:
|
||||
git_repos[file] = []
|
||||
|
||||
git_repos[file].append(project_repo_val)
|
||||
found_project_repo = True
|
||||
|
||||
if not found_project_repo:
|
||||
missing_repos.append(file)
|
||||
|
||||
if break_on_missing_repos and len(missing_repos) > 0:
|
||||
print('Missing `{0}` comment for:\n{1}'.format(project_source_url_str, '\n'.join(missing_repos)))
|
||||
|
||||
return git_repos
|
||||
|
||||
def validate_url(text):
|
||||
if text == '':
|
||||
return False
|
||||
try:
|
||||
result = urlparse(text)
|
||||
return all([result.scheme, result.netloc])
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
def format_feeds_from_git_repos(git_repos):
|
||||
feeds = {
|
||||
'ansible': {
|
||||
'text': 'ansible',
|
||||
'title': 'ansible',
|
||||
'type': 'rss',
|
||||
'htmlUrl': 'https://pypi.org/project/ansible/#history',
|
||||
'xmlUrl': 'https://pypi.org/rss/project/ansible/releases.xml'
|
||||
},
|
||||
'ansible-core': {
|
||||
'text': 'ansible-core',
|
||||
'title': 'ansible-core',
|
||||
'type': 'rss',
|
||||
'htmlUrl': 'https://pypi.org/project/ansible-core/#history',
|
||||
'xmlUrl': 'https://pypi.org/rss/project/ansible-core/releases.xml'
|
||||
}
|
||||
}
|
||||
for role, git_repos in git_repos.items():
|
||||
for idx, git_repo in enumerate(git_repos):
|
||||
if 'github' in git_repo:
|
||||
atomFilePath = git_repo.replace('.git', '') + '/releases.atom'
|
||||
elif ('gitlab' in git_repo or 'mau.dev' in git_repo):
|
||||
atomFilePath = git_repo.replace('.git', '') + '/-/tags?format=atom'
|
||||
elif 'git.zx2c4.com' in git_repo:
|
||||
atomFilePath = git_repo + '/atom/'
|
||||
else:
|
||||
print('Unrecognized git repository: %s' % git_repo)
|
||||
continue
|
||||
|
||||
role_name = role.split('/')[4]
|
||||
if role_name == 'defaults':
|
||||
role_name = role.split('/')[3]
|
||||
role_name = role_name.removeprefix('matrix-bot-').removeprefix('matrix-bridge-').removeprefix('matrix-client-').removeprefix('matrix-')
|
||||
if idx > 0:
|
||||
# there is more than 1 project source code for this role
|
||||
role_name += '-' + str(idx+1)
|
||||
|
||||
feeds[role_name] = {
|
||||
'text': role_name,
|
||||
'title': role_name,
|
||||
'type': 'rss',
|
||||
'htmlUrl': git_repo,
|
||||
'xmlUrl': atomFilePath
|
||||
}
|
||||
|
||||
feeds = {key: val for key, val in sorted(feeds.items(), key = lambda item: item[0])}
|
||||
return feeds
|
||||
|
||||
def dump_opml_file_from_feeds(feeds):
|
||||
tree = ET.ElementTree('tree')
|
||||
|
||||
opml = ET.Element('opml', {'version': '1.0'})
|
||||
head = ET.SubElement(opml, 'head')
|
||||
|
||||
title = ET.SubElement(head, 'title')
|
||||
title.text = 'Release feeds for roles'
|
||||
|
||||
body = ET.SubElement(opml, 'body')
|
||||
for role, feed_dict in feeds.items():
|
||||
outline = ET.SubElement(body, 'outline', feed_dict)
|
||||
|
||||
ET.indent(opml)
|
||||
tree._setroot(opml)
|
||||
file_name = 'releases.opml'
|
||||
tree.write(file_name, encoding = 'UTF-8', xml_declaration = True)
|
||||
print('Generated %s' % file_name)
|
||||
|
||||
def dump_hookshot_commands(feeds):
|
||||
file_name = 'releases.hookshot.txt'
|
||||
f = open(file_name, 'w')
|
||||
for role, feed_dict in feeds.items():
|
||||
f.write('!hookshot feed %s %s\n' % (feed_dict['xmlUrl'], role))
|
||||
f.close()
|
||||
print('Generated %s' % file_name)
|
||||
|
||||
if __name__ == '__main__':
|
||||
file_paths = get_roles_files_from_dir(root_dir=args.root_dir)
|
||||
break_on_missing = args.action == 'check'
|
||||
git_repos = get_git_repos_from_files(file_paths=file_paths, break_on_missing_repos=break_on_missing)
|
||||
feeds = format_feeds_from_git_repos(git_repos)
|
||||
|
||||
if args.action == 'dump':
|
||||
dump_opml_file_from_feeds(feeds)
|
||||
if args.action == 'hookshot':
|
||||
dump_hookshot_commands(feeds)
|
|
@ -116,7 +116,7 @@ Make sure the user you want to login as has an email address in authentik, other
|
|||
|
||||
## Usage
|
||||
|
||||
After installation, you should be able to access your new Gitea instance at the configured URL (see above).
|
||||
After installation, you should be able to access your new Grafana instance at the configured URL (see above).
|
||||
|
||||
Going there, you'll be taken to the initial setup wizard, which will let you assign some paswords and other configuration.
|
||||
|
||||
|
|
52
docs/services/linkding.md
Normal file
52
docs/services/linkding.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
# Linkding
|
||||
|
||||
[Linkding](https://github.com/sissbruecker/linkding) bookmark manager that is designed be to be minimal and fast.
|
||||
|
||||
## Dependencies
|
||||
|
||||
This service requires the following other services:
|
||||
|
||||
- a [Postgres](postgres.md) database, but [SQLite](https://www.sqlite.org/) is also a possibility (see `linkding_database_engine` below)
|
||||
- a [Traefik](traefik.md) reverse-proxy server
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable this service, add the following configuration to your `vars.yml` file and re-run the [installation](../installing.md) process:
|
||||
|
||||
```yaml
|
||||
########################################################################
|
||||
# #
|
||||
# linkding #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
linkding_enabled: true
|
||||
|
||||
linkding_hostname: mash.example.com
|
||||
linkding_path_prefix: /linkding
|
||||
|
||||
# We configure Linkding to use Postgres by default. See docs/services/postgres.md.
|
||||
# To use an external Postgres server, you need to tweak additional `linkding_database_*` variables.
|
||||
# Feel free to remove the line below to make Linkding use SQLite.
|
||||
linkding_database_engine: postgres
|
||||
|
||||
linkding_superuser_username: change me
|
||||
linkding_superuser_password: change me
|
||||
########################################################################
|
||||
# #
|
||||
# /linkding #
|
||||
# #
|
||||
########################################################################
|
||||
```
|
||||
|
||||
In the example configuration above, we configure the service to be hosted at `https://mash.example.com/linkding`.
|
||||
|
||||
You can remove the `linkding_path_prefix` variable definition, so that the service is served at `https://mash.example.com/`.
|
||||
|
||||
### Superuser
|
||||
|
||||
Please note the use of [`linkding_superuser_username`](https://github.com/sissbruecker/linkding/blob/master/docs/Options.md#ld_superuser_name) and [`linkding_superuser_password`](https://github.com/sissbruecker/linkding/blob/master/docs/Options.md#ld_superuser_password) variables. These are not mandatory and are meant to be set the first time you run this role.
|
||||
|
||||
## Usage
|
||||
|
||||
After installation, you can log in with your superuser login (`linkding_superuser_username`) and password (`linkding_superuser_password`).
|
41
docs/services/n8n.md
Normal file
41
docs/services/n8n.md
Normal file
|
@ -0,0 +1,41 @@
|
|||
# n8n
|
||||
|
||||
[n8n](https://n8n.io/) is a workflow automation tool for technical people.
|
||||
|
||||
## Dependencies
|
||||
|
||||
This service requires the following other services:
|
||||
|
||||
- a [Postgres](postgres.md) database
|
||||
- a [Traefik](traefik.md) reverse-proxy server
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable this service, add the following configuration to your `vars.yml` file and re-run the [installation](../installing.md) process:
|
||||
|
||||
```yaml
|
||||
########################################################################
|
||||
# #
|
||||
# n8n #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
n8n_enabled: true
|
||||
|
||||
n8n_hostname: mash.example.com
|
||||
n8n_path_prefix: /n8n
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# /n8n #
|
||||
# #
|
||||
########################################################################
|
||||
```
|
||||
|
||||
In the example configuration above, we configure the service to be hosted at `https://mash.example.com/n8n`.
|
||||
|
||||
You can remove the `n8n_path_prefix` variable definition, to make it default to `/`, so that the service is served at `https://mash.example.com/`.
|
||||
|
||||
## Usage
|
||||
|
||||
You can create additional users (admin-privileged or not) after logging in.
|
|
@ -26,12 +26,14 @@
|
|||
| [Jitsi](https://jitsi.org/) | A fully encrypted, 100% Open Source video conferencing solution | [Link](services/jitsi.md) |
|
||||
| [Keycloak](https://www.keycloak.org/) | An open source identity and access management solution. | [Link](services/keycloak.md) |
|
||||
| [Lago](https://www.getlago.com/) | Open-source metering and usage-based billing | [Link](services/lago.md) |
|
||||
| [linkding](https://github.com/sissbruecker/linkding/) | Bookmark manager designed to be minimal and fast. | [Link](services/linkding.md) |
|
||||
| [MariaDB](https://mariadb.org/) | A powerful, open source object-relational database system | [Link](services/mariadb.md) |
|
||||
| [Matrix Rooms Search API](https://gitlab.com/etke.cc/mrs/api) | A fully-featured, standalone, matrix rooms search service. | [Link](services/mrs.md) |
|
||||
| [MongoDB](https://www.mongodb.com/) | A source-available cross-platform document-oriented (NoSQL) database program. | [Link](services/mongodb.md) |
|
||||
| [Mosquitto](https://mosquitto.org/) | An open-source MQTT broker | [Link](services/mosquitto.md) |
|
||||
| [Miniflux](https://miniflux.app/) | Minimalist and opinionated feed reader. | [Link](services/miniflux.md) |
|
||||
| [Mobilizon](https://joinmobilizon.org/en/) | An ActivityPub/Fediverse server to create and share events. | [Link](services/mobilizon.md) |
|
||||
| [n8n](https://n8n.io/) | Workflow automation for technical people. | [Link](services/n8n.md) |
|
||||
| [Navidrome](https://www.navidrome.org/) | [Subsonic-API](http://www.subsonic.org/pages/api.jsp) compatible music server | [Link](services/navidrome.md)
|
||||
| [NetBox](https://docs.netbox.dev/en/stable/) | Web application that provides [IP address management (IPAM)](https://en.wikipedia.org/wiki/IP_address_management) and [data center infrastructure management (DCIM)](https://en.wikipedia.org/wiki/Data_center_management#Data_center_infrastructure_management) functionality | [Link](services/netbox.md) |
|
||||
| [Nextcloud](https://nextcloud.com/) | The most popular self-hosted collaboration solution for tens of millions of users at thousands of organizations across the globe. | [Link](services/nextcloud.md) |
|
||||
|
|
|
@ -149,6 +149,8 @@ devture_systemd_service_manager_services_list_auto: |
|
|||
+
|
||||
([{'name': (lago_identifier + '-pdf.service'), 'priority': 1900, 'groups': ['mash', 'lago', 'lago-pdf']}] if lago_enabled else [])
|
||||
+
|
||||
([{'name': (linkding_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'linkding']}] if linkding_enabled else [])
|
||||
+
|
||||
([{'name': (miniflux_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'miniflux']}] if miniflux_enabled else [])
|
||||
+
|
||||
([{'name': (mongodb_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'mongodb']}] if mongodb_enabled else [])
|
||||
|
@ -157,6 +159,8 @@ devture_systemd_service_manager_services_list_auto: |
|
|||
+
|
||||
([{'name': (mrs_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'mrs']}] if mrs_enabled else [])
|
||||
+
|
||||
([{'name': (n8n_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'n8n']}] if n8n_enabled else [])
|
||||
+
|
||||
([{'name': (navidrome_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'navidrome']}] if navidrome_enabled else [])
|
||||
+
|
||||
([{'name': (netbox_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'netbox', 'netbox-server']}] if netbox_enabled else [])
|
||||
|
@ -237,6 +241,10 @@ devture_postgres_systemd_services_to_stop_for_maintenance_list: |
|
|||
{{
|
||||
([(miniflux_identifier + '.service')] if miniflux_enabled else [])
|
||||
+
|
||||
([(n8n_identifier + '.service')] if n8n_enabled else [])
|
||||
+
|
||||
([(linkding_identifier + '.service')] if linkding_enabled and linkding_database_engine == 'postgres' else [])
|
||||
+
|
||||
([(redmine_identifier + '.service')] if redmine_enabled else [])
|
||||
}}
|
||||
|
||||
|
@ -301,6 +309,12 @@ devture_postgres_managed_databases_auto: |
|
|||
'password': lago_database_password,
|
||||
}] if lago_enabled and lago_database_hostname == devture_postgres_identifier else [])
|
||||
+
|
||||
([{
|
||||
'name': linkding_database_name,
|
||||
'username': linkding_database_username,
|
||||
'password': linkding_database_password,
|
||||
}] if linkding_enabled and linkding_database_engine == 'postgres' else [])
|
||||
+
|
||||
([{
|
||||
'name': miniflux_database_name,
|
||||
'username': miniflux_database_username,
|
||||
|
@ -313,6 +327,12 @@ devture_postgres_managed_databases_auto: |
|
|||
'password': redmine_database_password,
|
||||
}] if redmine_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': n8n_database_name,
|
||||
'username': n8n_database_username,
|
||||
'password': n8n_database_password,
|
||||
}] if n8n_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': netbox_database_name,
|
||||
'username': netbox_database_username,
|
||||
|
@ -1316,6 +1336,22 @@ hubsite_service_miniflux_logo_location: "{{ role_path }}/assets/miniflux.png"
|
|||
hubsite_service_miniflux_description: "An opinionated feed reader"
|
||||
hubsite_service_miniflux_priority: 1000
|
||||
|
||||
# n8n
|
||||
hubsite_service_n8n_enabled: "{{ n8n_enabled }}"
|
||||
hubsite_service_n8n_name: n8n
|
||||
hubsite_service_n8n_url: "https://{{ n8n_hostname }}{{ n8n_path_prefix }}"
|
||||
hubsite_service_n8n_logo_location: "{{ role_path }}/assets/n8n.png"
|
||||
hubsite_service_n8n_description: "Workflow automation for technical people."
|
||||
hubsite_service_n8n_priority: 1000
|
||||
|
||||
# Linkding
|
||||
hubsite_service_linkding_enabled: "{{ linkding_enabled }}"
|
||||
hubsite_service_linkding_name: Linkding
|
||||
hubsite_service_linkding_url: "https://{{ linkding_hostname }}{{ linkding_path_prefix }}"
|
||||
hubsite_service_linkding_logo_location: "{{ role_path }}/assets/linkding.png"
|
||||
hubsite_service_linkding_description: "Bookmark manager that is designed be to be minimal and fast."
|
||||
hubsite_service_linkding_priority: 1000
|
||||
|
||||
# Nextcloud
|
||||
hubsite_service_nextcloud_enabled: "{{ nextcloud_enabled }}"
|
||||
hubsite_service_nextcloud_name: Nextcloud
|
||||
|
@ -1409,8 +1445,12 @@ hubsite_service_list_auto: |
|
|||
+
|
||||
([{'name': hubsite_service_miniflux_name, 'url': hubsite_service_miniflux_url, 'logo_location': hubsite_service_miniflux_logo_location, 'description': hubsite_service_miniflux_description, 'priority': hubsite_service_miniflux_priority}] if hubsite_service_miniflux_enabled else [])
|
||||
+
|
||||
([{'name': hubsite_service_n8n_name, 'url': hubsite_service_n8n_url, 'logo_location': hubsite_service_n8n_logo_location, 'description': hubsite_service_n8n_description, 'priority': hubsite_service_n8n_priority}] if hubsite_service_n8n_enabled else [])
|
||||
+
|
||||
([{'name': hubsite_service_nextcloud_name, 'url': hubsite_service_nextcloud_url, 'logo_location': hubsite_service_nextcloud_logo_location, 'description': hubsite_service_nextcloud_description, 'priority': hubsite_service_nextcloud_priority}] if hubsite_service_nextcloud_enabled else [])
|
||||
+
|
||||
([{'name': hubsite_service_linkding_name, 'url': hubsite_service_linkding_url, 'logo_location': hubsite_service_linkding_logo_location, 'description': hubsite_service_linkding_description, 'priority': hubsite_service_linkding_priority}] if hubsite_service_linkding_enabled else [])
|
||||
+
|
||||
([{'name': hubsite_service_owncast_name, 'url': hubsite_service_owncast_url, 'logo_location': hubsite_service_owncast_logo_location, 'description': hubsite_service_owncast_description, 'priority': hubsite_service_owncast_priority}] if hubsite_service_owncast_enabled else [])
|
||||
+
|
||||
([{'name': hubsite_service_peertube_name, 'url': hubsite_service_peertube_url, 'logo_location': hubsite_service_peertube_logo_location, 'description': hubsite_service_peertube_description, 'priority': hubsite_service_peertube_priority}] if hubsite_service_peertube_enabled else [])
|
||||
|
@ -1729,6 +1769,48 @@ lago_api_environment_variable_encryption_key_derivation_salt: "{{ '%s' | format(
|
|||
# #
|
||||
########################################################################
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# linkding #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
linkding_enabled: false
|
||||
|
||||
linkding_identifier: "{{ mash_playbook_service_identifier_prefix }}linkding"
|
||||
|
||||
linkding_base_path: "{{ mash_playbook_base_path }}/{{ mash_playbook_service_base_directory_name_prefix }}linkding"
|
||||
|
||||
linkding_uid: "{{ mash_playbook_uid }}"
|
||||
linkding_gid: "{{ mash_playbook_gid }}"
|
||||
|
||||
linkding_systemd_required_services_list: |
|
||||
{{
|
||||
(['docker.service'])
|
||||
+
|
||||
([devture_postgres_identifier ~ '.service'] if devture_postgres_enabled and linkding_database_hostname == devture_postgres_identifier else [])
|
||||
}}
|
||||
|
||||
linkding_container_additional_networks: |
|
||||
{{
|
||||
([mash_playbook_reverse_proxyable_services_additional_network] if mash_playbook_reverse_proxyable_services_additional_network else [])
|
||||
+
|
||||
([devture_postgres_container_network] if devture_postgres_enabled and linkding_database_hostname == devture_postgres_identifier and linkding_container_network != devture_postgres_container_network else [])
|
||||
}}
|
||||
|
||||
linkding_container_labels_traefik_enabled: "{{ mash_playbook_traefik_labels_enabled }}"
|
||||
linkding_container_labels_traefik_docker_network: "{{ mash_playbook_reverse_proxyable_services_additional_network }}"
|
||||
linkding_container_labels_traefik_entrypoints: "{{ devture_traefik_entrypoint_primary }}"
|
||||
linkding_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_primary }}"
|
||||
|
||||
linkding_database_hostname: "{{ devture_postgres_connection_hostname if devture_postgres_enabled else '' }}"
|
||||
linkding_database_password: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'linkding.db', rounds=655555) | to_uuid }}"
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# /linkding #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
|
||||
########################################################################
|
||||
|
@ -1911,6 +1993,53 @@ mrs_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_
|
|||
|
||||
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# n8n #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
n8n_enabled: false
|
||||
|
||||
n8n_identifier: "{{ mash_playbook_service_identifier_prefix }}n8n"
|
||||
|
||||
n8n_base_path: "{{ mash_playbook_base_path }}/{{ mash_playbook_service_base_directory_name_prefix }}n8n"
|
||||
|
||||
# Please see the note attached to this comment on why we can't use mash's playbook uid and gid
|
||||
# https://github.com/kinduff/ansible-docker-n8n/blob/v1.4.2/defaults/main.yml
|
||||
n8n_uid: "1000"
|
||||
n8n_gid: "1000"
|
||||
|
||||
n8n_systemd_required_services_list: |
|
||||
{{
|
||||
(['docker.service'])
|
||||
+
|
||||
([devture_postgres_identifier ~ '.service'] if devture_postgres_enabled and n8n_database_hostname == devture_postgres_identifier else [])
|
||||
}}
|
||||
|
||||
n8n_container_additional_networks: |
|
||||
{{
|
||||
([mash_playbook_reverse_proxyable_services_additional_network] if mash_playbook_reverse_proxyable_services_additional_network else [])
|
||||
+
|
||||
([devture_postgres_container_network] if devture_postgres_enabled and n8n_database_hostname == devture_postgres_identifier and n8n_container_network != devture_postgres_container_network else [])
|
||||
}}
|
||||
|
||||
n8n_container_labels_traefik_enabled: "{{ mash_playbook_traefik_labels_enabled }}"
|
||||
n8n_container_labels_traefik_docker_network: "{{ mash_playbook_reverse_proxyable_services_additional_network }}"
|
||||
n8n_container_labels_traefik_entrypoints: "{{ devture_traefik_entrypoint_primary }}"
|
||||
n8n_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_primary }}"
|
||||
|
||||
n8n_database_hostname: "{{ devture_postgres_connection_hostname if devture_postgres_enabled else '' }}"
|
||||
n8n_database_password: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'n8n.db', rounds=655555) | to_uuid }}"
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# /n8n #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# navidrome #
|
||||
|
|
7
justfile
7
justfile
|
@ -13,13 +13,18 @@ roles:
|
|||
fi
|
||||
|
||||
# Updates requirements.yml if there are any new tags available. Requires agru
|
||||
update:
|
||||
update: && opml
|
||||
@agru -u
|
||||
|
||||
# Runs ansible-lint against all roles in the playbook
|
||||
lint:
|
||||
ansible-lint
|
||||
|
||||
# dumps an OPML file with extracted git feeds for roles
|
||||
opml:
|
||||
@echo "generating opml..."
|
||||
@python bin/feeds.py . dump
|
||||
|
||||
# Runs the playbook with --tags=install-all,start and optional arguments
|
||||
install-all *extra_args: (run-tags "install-all,start" extra_args)
|
||||
|
||||
|
|
43
releases.opml
Normal file
43
releases.opml
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<opml version="1.0">
|
||||
<head>
|
||||
<title>Release feeds for roles</title>
|
||||
</head>
|
||||
<body>
|
||||
<outline text="adguard_home" title="adguard_home" type="rss" htmlUrl="https://github.com/AdguardTeam/AdguardHome" xmlUrl="https://github.com/AdguardTeam/AdguardHome/releases.atom" />
|
||||
<outline text="ansible" title="ansible" type="rss" htmlUrl="https://pypi.org/project/ansible/#history" xmlUrl="https://pypi.org/rss/project/ansible/releases.xml" />
|
||||
<outline text="ansible-core" title="ansible-core" type="rss" htmlUrl="https://pypi.org/project/ansible-core/#history" xmlUrl="https://pypi.org/rss/project/ansible-core/releases.xml" />
|
||||
<outline text="appsmith" title="appsmith" type="rss" htmlUrl="https://github.com/appsmithorg/appsmith" xmlUrl="https://github.com/appsmithorg/appsmith/releases.atom" />
|
||||
<outline text="backup_borg" title="backup_borg" type="rss" htmlUrl="https://gitlab.com/etke.cc/borgmatic" xmlUrl="https://gitlab.com/etke.cc/borgmatic/-/tags?format=atom" />
|
||||
<outline text="com.devture.ansible.role.container_socket_proxy" title="com.devture.ansible.role.container_socket_proxy" type="rss" htmlUrl="https://github.com/Tecnativa/docker-socket-proxy" xmlUrl="https://github.com/Tecnativa/docker-socket-proxy/releases.atom" />
|
||||
<outline text="com.devture.ansible.role.postgres" title="com.devture.ansible.role.postgres" type="rss" htmlUrl="https://github.com/postgres/postgres" xmlUrl="https://github.com/postgres/postgres/releases.atom" />
|
||||
<outline text="com.devture.ansible.role.postgres_backup" title="com.devture.ansible.role.postgres_backup" type="rss" htmlUrl="https://github.com/prodrigestivill/docker-postgres-backup-local" xmlUrl="https://github.com/prodrigestivill/docker-postgres-backup-local/releases.atom" />
|
||||
<outline text="com.devture.ansible.role.traefik" title="com.devture.ansible.role.traefik" type="rss" htmlUrl="https://github.com/traefik/traefik" xmlUrl="https://github.com/traefik/traefik/releases.atom" />
|
||||
<outline text="com.devture.ansible.role.woodpecker_ci_agent" title="com.devture.ansible.role.woodpecker_ci_agent" type="rss" htmlUrl="https://github.com/woodpecker-ci/woodpecker" xmlUrl="https://github.com/woodpecker-ci/woodpecker/releases.atom" />
|
||||
<outline text="com.devture.ansible.role.woodpecker_ci_server" title="com.devture.ansible.role.woodpecker_ci_server" type="rss" htmlUrl="https://github.com/woodpecker-ci/woodpecker" xmlUrl="https://github.com/woodpecker-ci/woodpecker/releases.atom" />
|
||||
<outline text="focalboard" title="focalboard" type="rss" htmlUrl="https://github.com/mattermost/focalboard" xmlUrl="https://github.com/mattermost/focalboard/releases.atom" />
|
||||
<outline text="grafana" title="grafana" type="rss" htmlUrl="https://github.com/grafana/grafana" xmlUrl="https://github.com/grafana/grafana/releases.atom" />
|
||||
<outline text="healthchecks" title="healthchecks" type="rss" htmlUrl="https://github.com/healthchecks/healthchecks" xmlUrl="https://github.com/healthchecks/healthchecks/releases.atom" />
|
||||
<outline text="infisical" title="infisical" type="rss" htmlUrl="https://github.com/Infisical/infisical" xmlUrl="https://github.com/Infisical/infisical/releases.atom" />
|
||||
<outline text="jitsi" title="jitsi" type="rss" htmlUrl="https://github.com/jitsi/docker-jitsi-meet" xmlUrl="https://github.com/jitsi/docker-jitsi-meet/releases.atom" />
|
||||
<outline text="keycloak" title="keycloak" type="rss" htmlUrl="https://github.com/keycloak/keycloak" xmlUrl="https://github.com/keycloak/keycloak/releases.atom" />
|
||||
<outline text="lago" title="lago" type="rss" htmlUrl="https://github.com/lago/lago" xmlUrl="https://github.com/lago/lago/releases.atom" />
|
||||
<outline text="linkding" title="linkding" type="rss" htmlUrl="https://github.com/sissbruecker/linkding" xmlUrl="https://github.com/sissbruecker/linkding/releases.atom" />
|
||||
<outline text="miniflux" title="miniflux" type="rss" htmlUrl="https://github.com/miniflux/v2" xmlUrl="https://github.com/miniflux/v2/releases.atom" />
|
||||
<outline text="mongodb" title="mongodb" type="rss" htmlUrl="https://github.com/mongodb/mongo" xmlUrl="https://github.com/mongodb/mongo/releases.atom" />
|
||||
<outline text="n8n" title="n8n" type="rss" htmlUrl="https://github.com/n8n-io/n8n" xmlUrl="https://github.com/n8n-io/n8n/releases.atom" />
|
||||
<outline text="navidrome" title="navidrome" type="rss" htmlUrl="https://github.com/navidrome/navidrome" xmlUrl="https://github.com/navidrome/navidrome/releases.atom" />
|
||||
<outline text="netbox" title="netbox" type="rss" htmlUrl="https://github.com/netbox-community/netbox-docker/" xmlUrl="https://github.com/netbox-community/netbox-docker//releases.atom" />
|
||||
<outline text="owncast" title="owncast" type="rss" htmlUrl="https://github.com/owncast/owncast" xmlUrl="https://github.com/owncast/owncast/releases.atom" />
|
||||
<outline text="prometheus" title="prometheus" type="rss" htmlUrl="https://github.com/prometheus/prometheus" xmlUrl="https://github.com/prometheus/prometheus/releases.atom" />
|
||||
<outline text="prometheus_blackbox_exporter" title="prometheus_blackbox_exporter" type="rss" htmlUrl="https://github.com/prometheus/blackbox_exporter" xmlUrl="https://github.com/prometheus/blackbox_exporter/releases.atom" />
|
||||
<outline text="prometheus_node_exporter" title="prometheus_node_exporter" type="rss" htmlUrl="https://github.com/prometheus/node_exporter" xmlUrl="https://github.com/prometheus/node_exporter/releases.atom" />
|
||||
<outline text="prometheus_postgres_exporter" title="prometheus_postgres_exporter" type="rss" htmlUrl="https://github.com/prometheus-community/postgres_exporter" xmlUrl="https://github.com/prometheus-community/postgres_exporter/releases.atom" />
|
||||
<outline text="radicale" title="radicale" type="rss" htmlUrl="https://github.com/tomsquest/docker-radicale" xmlUrl="https://github.com/tomsquest/docker-radicale/releases.atom" />
|
||||
<outline text="redis" title="redis" type="rss" htmlUrl="https://github.com/redis/redis" xmlUrl="https://github.com/redis/redis/releases.atom" />
|
||||
<outline text="redmine" title="redmine" type="rss" htmlUrl="https://github.com/redmine/redmine" xmlUrl="https://github.com/redmine/redmine/releases.atom" />
|
||||
<outline text="soft_serve" title="soft_serve" type="rss" htmlUrl="https://github.com/charmbracelet/soft-serve" xmlUrl="https://github.com/charmbracelet/soft-serve/releases.atom" />
|
||||
<outline text="uptime_kuma" title="uptime_kuma" type="rss" htmlUrl="https://github.com/louislam/uptime-kuma" xmlUrl="https://github.com/louislam/uptime-kuma/releases.atom" />
|
||||
<outline text="wg_easy" title="wg_easy" type="rss" htmlUrl="https://github.com/WeeJeWel/wg-easy" xmlUrl="https://github.com/WeeJeWel/wg-easy/releases.atom" />
|
||||
</body>
|
||||
</opml>
|
|
@ -4,7 +4,7 @@
|
|||
version: v0.107.26-1
|
||||
name: adguard_home
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-appsmith.git
|
||||
version: v1.9.27-0
|
||||
version: v1.9.29-0
|
||||
name: appsmith
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-authentik.git
|
||||
version: v2023.6.1-0
|
||||
|
@ -41,7 +41,7 @@
|
|||
- src: git+https://github.com/devture/com.devture.ansible.role.timesync.git
|
||||
version: v1.0.0-0
|
||||
- src: git+https://github.com/devture/com.devture.ansible.role.traefik.git
|
||||
version: v2.10.3-0
|
||||
version: v2.10.4-0
|
||||
- src: git+https://github.com/devture/com.devture.ansible.role.woodpecker_ci_agent.git
|
||||
version: v0.15.8-0
|
||||
- src: git+https://github.com/devture/com.devture.ansible.role.woodpecker_ci_server.git
|
||||
|
@ -61,7 +61,7 @@
|
|||
version: v0.7.30-0
|
||||
name: firezone
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-focalboard.git
|
||||
version: v7.9.3-2
|
||||
version: v7.10.4-0
|
||||
name: focalboard
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-funkwhale.git
|
||||
version: v1.3.0-rc6-0
|
||||
|
@ -70,10 +70,10 @@
|
|||
version: 6.1.0
|
||||
name: geerlingguy.docker
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-gitea.git
|
||||
version: v1.20.0-0
|
||||
version: v1.20.1-0
|
||||
name: gitea
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-gotosocial.git
|
||||
version: v0.9.0-3
|
||||
version: v0.10.0-0
|
||||
name: gotosocial
|
||||
- src: git+https://gitlab.com/etke.cc/roles/grafana.git
|
||||
version: v10.0.2-1
|
||||
|
@ -101,13 +101,16 @@
|
|||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-lago.git
|
||||
version: v0.40.0-0
|
||||
name: lago
|
||||
- src: git+https://github.com/kinduff/ansible-docker-linkding.git
|
||||
version: v1.9.0
|
||||
name: linkding
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-mariadb.git
|
||||
version: v10.11.4-0
|
||||
name: mariadb
|
||||
- src: git+https://gitlab.com/etke.cc/roles/miniflux.git
|
||||
version: v2.0.45-0
|
||||
version: v2.0.46-0
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-mobilizon.git
|
||||
version: v3.1.0-2
|
||||
version: v3.1.3-0
|
||||
name: mobilizon
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-mongodb.git
|
||||
version: v6.0.6-0
|
||||
|
@ -118,6 +121,9 @@
|
|||
- src: git+https://gitlab.com/etke.cc/mrs/ansible-role-mrs.git
|
||||
version: v0.0.0-9
|
||||
name: mrs
|
||||
- src: git+https://github.com/kinduff/ansible-docker-n8n.git
|
||||
version: v1.4.2
|
||||
name: n8n
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-navidrome.git
|
||||
version: v0.49.3-2
|
||||
name: navidrome
|
||||
|
@ -144,7 +150,7 @@
|
|||
- src: git+https://gitlab.com/etke.cc/roles/prometheus_node_exporter.git
|
||||
version: v1.6.1-0
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git
|
||||
version: v0.13.1-0
|
||||
version: v0.13.2-0
|
||||
name: prometheus_postgres_exporter
|
||||
- src: git+https://gitlab.com/etke.cc/roles/radicale.git
|
||||
version: v3.1.8.3-0
|
||||
|
|
|
@ -90,6 +90,8 @@
|
|||
|
||||
- role: galaxy/mrs
|
||||
|
||||
- role: galaxy/n8n
|
||||
|
||||
- role: galaxy/healthchecks
|
||||
|
||||
- role: galaxy/infisical
|
||||
|
@ -106,6 +108,8 @@
|
|||
|
||||
- role: galaxy/lago
|
||||
|
||||
- role: galaxy/linkding
|
||||
|
||||
- role: galaxy/mobilizon
|
||||
|
||||
- role: galaxy/mosquitto
|
||||
|
|
Loading…
Reference in a new issue