diff --git a/docs/services/redmine.md b/docs/services/redmine.md new file mode 100644 index 0000000..456763f --- /dev/null +++ b/docs/services/redmine.md @@ -0,0 +1,42 @@ +# Redmine + +[Redmine](https://redmine.org/) is a flexible project management web application. Written using the Ruby on Rails framework, it is cross-platform and cross-database. + +## 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 +######################################################################## +# # +# redmine # +# # +######################################################################## + +redmine_enabled: true + +redmine_hostname: redmine.example.com + +######################################################################## +# # +# /redmine # +# # +######################################################################## +``` + +In the example configuration above, we configure the service to be hosted at `https://redmine.example.com`. + + +## Usage + +After installation, you can register your administrator account + +You can create additional users (admin-privileged or not) after that. diff --git a/docs/supported-services.md b/docs/supported-services.md index dc80092..73f1318 100644 --- a/docs/supported-services.md +++ b/docs/supported-services.md @@ -11,7 +11,8 @@ | [Prometheus Node Exporter](https://github.com/prometheus/node_exporter) | Exporter for machine metrics | [Link](services/prometheus-node-exporter.md) | | [Postgres](https://www.postgresql.org) | A powerful, open source object-relational database system | [Link](services/postgres.md) | | [Postgres Backup](https://github.com/prodrigestivill/docker-postgres-backup-local) | A solution for backing up PostgresSQL to local filesystem with periodic backups. | [Link](services/postgres-backup.md) | -| [Radicale](https://miniflux.app/) | A Free and Open-Source CalDAV and CardDAV Server (solution for hosting contacts and calendars) | [Link](services/radicale.md) | +| [Radicale](https://radicale.org/) | A Free and Open-Source CalDAV and CardDAV Server (solution for hosting contacts and calendars) | [Link](services/radicale.md) | +| [Redmine](https://redmine.org/) | A flexible project management web application. | [Link](services/redmine.md) | | [Redis](https://redis.io/) | An in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. | [Link](services/redis.md) | | [Traefik](https://doc.traefik.io/traefik/) | A container-aware reverse-proxy server | [Link](services/traefik.md) | | [Vaultwarden](https://github.com/dani-garcia/vaultwarden) | A lightweight unofficial and compatible implementation of the [Bitwarden](https://bitwarden.com/) password manager | [Link](services/vaultwarden.md) | diff --git a/group_vars/mash_servers b/group_vars/mash_servers index f386157..fc9116b 100644 --- a/group_vars/mash_servers +++ b/group_vars/mash_servers @@ -36,6 +36,8 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': (radicale_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'radicale']}] if radicale_enabled else []) + + ([{'name': (redmine_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'redmine']}] if redmine_enabled else []) + + ([{'name': (redis_identifier + '.service'), 'priority': 750, 'groups': ['mash', 'redis']}] if redis_enabled else []) + ([{'name': (vaultwarden_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'vaultwarden', 'vaultwarden-server']}] if vaultwarden_enabled else []) @@ -71,6 +73,8 @@ devture_postgres_gid: "{{ mash_playbook_gid }}" devture_postgres_systemd_services_to_stop_for_maintenance_list: | {{ ([(miniflux_identifier + '.service')] if miniflux_enabled else []) + + + ([(redmine_identifier + '.service')] if redmine_enabled else []) }} devture_postgres_managed_databases_auto: | @@ -93,6 +97,12 @@ devture_postgres_managed_databases_auto: | 'password': miniflux_database_password, }] if miniflux_enabled else []) + + ([{ + 'name': redmine_database_name, + 'username': redmine_database_username, + 'password': redmine_database_password, + }] if redmine_enabled else []) + + ([{ 'name': nextcloud_database_name, 'username': nextcloud_database_username, @@ -402,7 +412,7 @@ miniflux_database_password: "{{ '%s' | format(mash_playbook_generic_secret_key) ######################################################################## # # -# miniflux # +# /miniflux # # # ######################################################################## @@ -580,11 +590,59 @@ radicale_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certReso ######################################################################## # # -# radicale # +# /radicale # # # ######################################################################## +######################################################################## +# # +# redmine # +# # +######################################################################## + +redmine_enabled: false + +redmine_identifier: "{{ mash_playbook_service_identifier_prefix }}redmine" + +redmine_base_path: "{{ mash_playbook_base_path }}/redmine" + +redmine_uid: "{{ mash_playbook_uid }}" +redmine_gid: "{{ mash_playbook_gid }}" + +redmine_secret_key_base: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'secret.base', rounds=655555) | to_uuid }}" +redmine_secret_token: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'secret.token', rounds=655555) | to_uuid }}" +redmine_database_cipher_key: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'db.cipherkey', rounds=655555) | to_uuid }}" + +redmine_systemd_required_services_list: | + {{ + (['docker.service']) + + + ([devture_postgres_identifier ~ '.service'] if devture_postgres_enabled and redmine_database_hostname == devture_postgres_identifier else []) + }} + +redmine_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 redmine_database_hostname == devture_postgres_identifier and redmine_container_network != devture_postgres_container_network else []) + }} + +redmine_container_labels_traefik_enabled: "{{ mash_playbook_traefik_labels_enabled }}" +redmine_container_labels_traefik_docker_network: "{{ mash_playbook_reverse_proxyable_services_additional_network }}" +redmine_container_labels_traefik_entrypoints: "{{ devture_traefik_entrypoint_primary }}" +redmine_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_primary }}" + +redmine_database_type: "{{ 'postgresql' if devture_postgres_enabled else 'sqlite3' }}" +redmine_database_hostname: "{{ devture_postgres_connection_hostname if devture_postgres_enabled else '' }}" +redmine_database_password: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'redmine.db', rounds=655555) | to_uuid }}" + +######################################################################## +# # +# /redmine # +# # +######################################################################## + ######################################################################## # # diff --git a/requirements.yml b/requirements.yml index 60a8d3f..537e5d1 100644 --- a/requirements.yml +++ b/requirements.yml @@ -37,10 +37,10 @@ version: 9b4b088c62b528b73a9a7c93d3109b091dd42ec6 - src: git+https://github.com/devture/com.devture.ansible.role.woodpecker_ci_server.git - version: v0.15.7-1 + version: v0.15.7-2 - src: git+https://github.com/devture/com.devture.ansible.role.woodpecker_ci_agent.git - version: v0.15.7-0 + version: v0.15.7-1 - src: git+https://gitlab.com/etke.cc/roles/miniflux.git version: v2.0.43-0 @@ -57,13 +57,16 @@ - src: git+https://gitlab.com/etke.cc/roles/prometheus_node_exporter.git version: v1.5.0-3 +- src: git+https://gitlab.com/etke.cc/roles/redmine.git + version: v5.0.5-0 + - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-vaultwarden.git name: vaultwarden - version: v1.27.0-1 + version: v1.27.0-2 - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-gitea.git name: gitea - version: v1.18.5-2 + version: v1.18.5-3 - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-nextcloud.git name: nextcloud diff --git a/setup.yml b/setup.yml index 958bd93..5b74e6e 100644 --- a/setup.yml +++ b/setup.yml @@ -60,6 +60,8 @@ - role: galaxy/radicale + - role: galaxy/redmine + - role: galaxy/redis - role: galaxy/vaultwarden