Compare commits
8 commits
3171aa5ead
...
801d4b751b
| Author | SHA1 | Date | |
|---|---|---|---|
| 801d4b751b | |||
| be875edea9 | |||
| e8447a6289 | |||
| b6f7934c5f | |||
| 86dd20fbf0 | |||
| b3f201ed7d | |||
| c498b3ced8 | |||
| 6b4c4ccde4 |
84 changed files with 302 additions and 244 deletions
11
README.md
11
README.md
|
|
@ -12,7 +12,7 @@ vagrant plugin install vagrant-hosts vagrant-hostsupdater
|
||||||
```
|
```
|
||||||
|
|
||||||
Additionally, since the test setup mirrors the production setup in that it makes use of subdomains for the individual hosted applications,
|
Additionally, since the test setup mirrors the production setup in that it makes use of subdomains for the individual hosted applications,
|
||||||
the server needs to be reachable under a domain name,
|
the server needs to be reachable under a domain name,
|
||||||
not just an IP address.
|
not just an IP address.
|
||||||
For now this is most simply accomplished through editing the hosts file, e.g.:
|
For now this is most simply accomplished through editing the hosts file, e.g.:
|
||||||
|
|
||||||
|
|
@ -23,21 +23,20 @@ For now this is most simply accomplished through editing the hosts file, e.g.:
|
||||||
```
|
```
|
||||||
|
|
||||||
This will allow you to reach the main domain under `http(s)://ansible.test` and sets up two subdomains that can be reached.
|
This will allow you to reach the main domain under `http(s)://ansible.test` and sets up two subdomains that can be reached.
|
||||||
Be aware that the hosts file does not support subdomain wildcards.
|
Be aware that the hosts file does not support subdomain wildcards.
|
||||||
You will have to specify each hostname individually or use a tool such as `dnsmasq`.
|
You will have to specify each hostname individually or use a tool such as `dnsmasq`.
|
||||||
Read more [here](https://serverfault.com/questions/118378/in-my-etc-hosts-file-on-linux-osx-how-do-i-do-a-wildcard-subdomain).
|
Read more [here](https://serverfault.com/questions/118378/in-my-etc-hosts-file-on-linux-osx-how-do-i-do-a-wildcard-subdomain).
|
||||||
|
|
||||||
Then you are ready to run the complete infrastructure setup locally,
|
Then you are ready to run the complete infrastructure setup locally,
|
||||||
simply by executing `ansible-playbook site.yml`.
|
simply by executing `ansible-playbook site.yml`.
|
||||||
You can of course pick and choose what should be executed with host limits, tags, group variables, and so on,
|
You can of course pick and choose what should be executed with host limits, tags, group variables, and so on,
|
||||||
but this should provide an easy way to see if a) the playbook is working as intended and b) what it does is useful.
|
but this should provide an easy way to see if a) the playbook is working as intended and b) what it does is useful.
|
||||||
|
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|
||||||
Most variables to be changed should be set either through `group_variables` or `host_variables`.
|
Most variables to be changed should be set either through `group_variables` or `host_variables`.
|
||||||
For my deployment I have a `production` group under `group_variables` which houses both a `vars.yml` containing basic variables
|
For my deployment I have a `production` group under `group_variables` which houses both a `vars.yml` containing basic variables
|
||||||
(like `server_domain`, `caddy_email`, etc.)
|
(like `server_domain`, `caddy_email`, etc.)
|
||||||
and a `vault.yml` which houses everything that should ideally not be lying around in plain-text
|
and a `vault.yml` which houses everything that should ideally not be lying around in plain-text
|
||||||
(individual container and database passwords for the various roles etc).
|
(individual container and database passwords for the various roles etc).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,21 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
docker_swarm_advertise_addr: eth1
|
docker_swarm_advertise_addr: eth1
|
||||||
|
|
||||||
caddy_use_debug: yes
|
caddy_use_debug: yes
|
||||||
caddy_tls_use_staging: yes
|
caddy_tls_use_staging: yes
|
||||||
|
|
||||||
blog_use_https: no
|
blog_use_https: no
|
||||||
caddy_use_https: no
|
caddy_use_https: no
|
||||||
forgejo_use_https: no
|
forgejo_use_https: no
|
||||||
landingpage_use_https: no
|
landingpage_use_https: no
|
||||||
miniflux_use_https: no
|
miniflux_use_https: no
|
||||||
monica_use_https: no
|
monica_use_https: no
|
||||||
nextcloud_use_https: no
|
nextcloud_use_https: no
|
||||||
ntfy_use_https: no
|
ntfy_use_https: no
|
||||||
searx_use_https: no
|
searx_use_https: no
|
||||||
shaarli_use_https: no
|
shaarli_use_https: no
|
||||||
traggo_use_https: no
|
traggo_use_https: no
|
||||||
wallabag_use_https: no
|
wallabag_use_https: no
|
||||||
whoami_use_https: no
|
whoami_use_https: no
|
||||||
|
|
||||||
server_domain: ansible.test
|
server_domain: ansible.test
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Caddy
|
# Caddy
|
||||||
|
|
||||||
Caddy is the reverse proxy for all other services running on the infrastructure.
|
Caddy is the reverse proxy for all other services running on the infrastructure.
|
||||||
It was chosen for its relative ease of use,
|
It was chosen for its relative ease of use,
|
||||||
interactible API and https-by-default setup.
|
interactible API and https-by-default setup.
|
||||||
|
|
||||||
## Variables
|
## Variables
|
||||||
|
|
@ -48,28 +48,27 @@ caddy_version: alpine
|
||||||
|
|
||||||
Sets the docker image version to be used.
|
Sets the docker image version to be used.
|
||||||
|
|
||||||
|
|
||||||
## Internal variables
|
## Internal variables
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
caddy_stack:
|
caddy_stack:
|
||||||
name: caddy
|
name: caddy
|
||||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Defines the actual docker stack which will later run on the target.
|
Defines the actual docker stack which will later run on the target.
|
||||||
The name can be changed and will be used as a proxy target (`caddy.mydomain.com` or `192.168.1.1/caddy`) ---
|
The name can be changed and will be used as a proxy target (`caddy.mydomain.com` or `192.168.1.1/caddy`) ---
|
||||||
though to be clear there is no intention currently to expose the caddy to the web at the moment.\
|
though to be clear there is no intention currently to expose the caddy to the web at the moment.\
|
||||||
The compose option defines which template to use for the `docker-stack.yml` file. You can either change options for the stack in the template file,
|
The compose option defines which template to use for the `docker-stack.yml` file. You can either change options for the stack in the template file,
|
||||||
or directly here like the following:
|
or directly here like the following:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
compose:
|
compose:
|
||||||
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
- version: '3'
|
- version: "3"
|
||||||
services:
|
services:
|
||||||
another-container:
|
another-container:
|
||||||
image: nginx:latest
|
image: nginx:latest
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
|
caddy_version: 2.8.4-alpine # tag exact version to avoid suprising container renewals
|
||||||
caddy_version: alpine
|
|
||||||
caddy_caddyfile_dir: "{{ docker_stack_files_dir }}/caddy"
|
caddy_caddyfile_dir: "{{ docker_stack_files_dir }}/caddy"
|
||||||
|
|
||||||
caddy_use_debug: no
|
caddy_use_debug: no
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
caddy_stack:
|
caddy_stack:
|
||||||
name: caddy
|
name: caddy
|
||||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Caddy
|
# Caddy
|
||||||
|
|
||||||
Caddy is the reverse proxy for all other services running on the infrastructure.
|
Caddy is the reverse proxy for all other services running on the infrastructure.
|
||||||
It was chosen for its relative ease of use,
|
It was chosen for its relative ease of use,
|
||||||
interactible API and https-by-default setup.
|
interactible API and https-by-default setup.
|
||||||
|
|
||||||
## Variables
|
## Variables
|
||||||
|
|
@ -48,28 +48,27 @@ caddy_version: alpine
|
||||||
|
|
||||||
Sets the docker image version to be used.
|
Sets the docker image version to be used.
|
||||||
|
|
||||||
|
|
||||||
## Internal variables
|
## Internal variables
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
caddy_stack:
|
caddy_stack:
|
||||||
name: caddy
|
name: caddy
|
||||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Defines the actual docker stack which will later run on the target.
|
Defines the actual docker stack which will later run on the target.
|
||||||
The name can be changed and will be used as a proxy target (`caddy.mydomain.com` or `192.168.1.1/caddy`) ---
|
The name can be changed and will be used as a proxy target (`caddy.mydomain.com` or `192.168.1.1/caddy`) ---
|
||||||
though to be clear there is no intention currently to expose the caddy to the web at the moment.\
|
though to be clear there is no intention currently to expose the caddy to the web at the moment.\
|
||||||
The compose option defines which template to use for the `docker-stack.yml` file. You can either change options for the stack in the template file,
|
The compose option defines which template to use for the `docker-stack.yml` file. You can either change options for the stack in the template file,
|
||||||
or directly here like the following:
|
or directly here like the following:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
compose:
|
compose:
|
||||||
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
- version: '3'
|
- version: "3"
|
||||||
services:
|
services:
|
||||||
another-container:
|
another-container:
|
||||||
image: nginx:latest
|
image: nginx:latest
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
|
|
|
||||||
5
roles/diun/README.md
Normal file
5
roles/diun/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# diun
|
||||||
|
|
||||||
|
Monitor the deployed swarm containers for updates.
|
||||||
|
Will notify you when it found any update for any container.
|
||||||
|
Can (currently) notify you either through mail or on matrix.
|
||||||
26
roles/diun/defaults/main.yml
Normal file
26
roles/diun/defaults/main.yml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
diun_version: 4
|
||||||
|
|
||||||
|
diun_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
||||||
|
diun_use_https: true
|
||||||
|
|
||||||
|
# the subdomain link diun will be reachable under
|
||||||
|
subdomain_alias: diun
|
||||||
|
|
||||||
|
diun_tz: Europe/Berlin
|
||||||
|
diun_log_level: info
|
||||||
|
diun_watch_swarm_by_default: true
|
||||||
|
|
||||||
|
diun_notif_mail_host: localhost
|
||||||
|
diun_notif_mail_port: 25
|
||||||
|
# diun_notif_mail_username: required for mail
|
||||||
|
# diun_notif_mail_password: required for mail
|
||||||
|
# diun_notif_mail_from: required for mail
|
||||||
|
# diun_notif_mail_to: required for mail
|
||||||
|
|
||||||
|
diun_notif_matrix_url: "https://matrix.org"
|
||||||
|
#diun_notif_matrix_user: required for matrix
|
||||||
|
#diun_notif_matrix_password: required for matrix
|
||||||
|
#diun_notif_matrix_roomid: required for matrix
|
||||||
|
|
||||||
10
roles/diun/meta/main.yml
Normal file
10
roles/diun/meta/main.yml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: Marty Oehme
|
||||||
|
description: Notify on any docker swarm container updates
|
||||||
|
license: GPL-3.0-only
|
||||||
|
min_ansible_version: "2.9"
|
||||||
|
galaxy_tags: []
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- docker-swarm
|
||||||
12
roles/diun/tasks/main.yml
Normal file
12
roles/diun/tasks/main.yml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
## install diun container
|
||||||
|
- name: Deploy diun to swarm
|
||||||
|
community.general.docker_stack:
|
||||||
|
name: "{{ stack_name }}"
|
||||||
|
state: present
|
||||||
|
prune: yes
|
||||||
|
compose:
|
||||||
|
- "{{ stack_compose }}"
|
||||||
|
become: true
|
||||||
|
tags:
|
||||||
|
- docker-swarm
|
||||||
51
roles/diun/templates/docker-stack.yml.j2
Normal file
51
roles/diun/templates/docker-stack.yml.j2
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
version: '3.4'
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: crazymax/diun:latest
|
||||||
|
# healthcheck:
|
||||||
|
# test: ["CMD", "wget", "--spider", "-q", "127.0.0.1"]
|
||||||
|
# interval: 1m
|
||||||
|
# timeout: 10s
|
||||||
|
# retries: 3
|
||||||
|
# start_period: 1m
|
||||||
|
command: serve
|
||||||
|
volumes:
|
||||||
|
- "data:/data"
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
environment:
|
||||||
|
- "TZ={{ diun_tz }}"
|
||||||
|
- "LOG_LEVEL={{ diun_log_level }}"
|
||||||
|
- "LOG_JSON=false"
|
||||||
|
- "DIUN_WATCH_WORKERS=20"
|
||||||
|
- "DIUN_WATCH_SCHEDULE=0 */6 * * *"
|
||||||
|
- "DIUN_WATCH_JITTER=30s"
|
||||||
|
- "DIUN_PROVIDERS_SWARM=true"
|
||||||
|
- "DIUN_PROVIDERS_SWARM_WATCHBYDEFAULT={{ diun_watch_swarm_by_default }}"
|
||||||
|
{% if diun_notif_matrix_user is not undefined and not None and diun_notif_matrix_password is not undefined and not None and diun_notif_matrix_roomid is not undefined and not None %}
|
||||||
|
- "DIUN_NOTIF_MATRIX_HOMESERVERURL={{ diun_notif_matrix_url }}"
|
||||||
|
- "DIUN_NOTIF_MATRIX_USER={{ diun_notif_matrix_user }}"
|
||||||
|
- "DIUN_NOTIF_MATRIX_PASSWORD={{ diun_notif_matrix_password }}"
|
||||||
|
- "DIUN_NOTIF_MATRIX_ROOMID={{ diun_notif_matrix_roomid }}"
|
||||||
|
{% endif %}
|
||||||
|
{% if diun_notif_mail_username is not undefined and not None and diun_notif_mail_password is not undefined and not None and diun_notif_mail_from is not undefined and not None and diun_notif_mail_to is not undefined and not None %}
|
||||||
|
- "DIUN_NOTIF_MAIL_HOST={{ diun_notif_mail_host }}"
|
||||||
|
- "DIUN_NOTIF_MAIL_PORT={{ diun_notif_mail_port }}"
|
||||||
|
- "DIUN_NOTIF_MAIL_USERNAME={{ diun_notif_mail_username }}"
|
||||||
|
- "DIUN_NOTIF_MAIL_PASSWORD={{ diun_notif_mail_password }}"
|
||||||
|
- "DIUN_NOTIF_MAIL_FROM={{ diun_notif_mail_from }}"
|
||||||
|
- "DIUN_NOTIF_MAIL_TO={{ diun_notif_mail_to }}"
|
||||||
|
{% endif %}
|
||||||
|
# deploy:
|
||||||
|
# mode: replicated
|
||||||
|
# replicas: 1
|
||||||
|
# placement:
|
||||||
|
# constraints:
|
||||||
|
# - node.role == manager
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
"{{ docker_swarm_public_network_name }}":
|
||||||
|
external: true
|
||||||
6
roles/diun/vars/main.yml
Normal file
6
roles/diun/vars/main.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
stack_name: diun
|
||||||
|
|
||||||
|
stack_image: "crazymax/diun"
|
||||||
|
|
||||||
|
stack_compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
docker_stack_files_dir: /stacks
|
docker_stack_files_dir: /stacks
|
||||||
docker_swarm_public_network_name: public
|
docker_swarm_public_network_name: public
|
||||||
|
|
||||||
|
|
|
||||||
3
roles/docker-swarm/meta/main.yml
Normal file
3
roles/docker-swarm/meta/main.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- docker
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ docker_stack_files_dir }}"
|
path: "{{ docker_stack_files_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
tags:
|
tags:
|
||||||
- fs
|
- fs
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,18 @@
|
||||||
- repository
|
- repository
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Ensure latest docker-ce installed
|
- name: docker-ce is installed
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: "{{ packages }}"
|
||||||
|
state: present
|
||||||
|
tags:
|
||||||
|
- apt
|
||||||
|
- download
|
||||||
|
- packages
|
||||||
|
become: true
|
||||||
|
notify: Handle docker daemon
|
||||||
|
|
||||||
|
- name: Latest docker-ce is installed
|
||||||
ansible.builtin.package:
|
ansible.builtin.package:
|
||||||
name: "{{ packages }}"
|
name: "{{ packages }}"
|
||||||
state: latest
|
state: latest
|
||||||
|
|
@ -38,6 +49,8 @@
|
||||||
- apt
|
- apt
|
||||||
- download
|
- download
|
||||||
- packages
|
- packages
|
||||||
|
- docker
|
||||||
|
- never
|
||||||
become: true
|
become: true
|
||||||
notify: Handle docker daemon
|
notify: Handle docker daemon
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: git
|
subdomain_alias: git
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `git.yourdomain.com` -
|
By default, it will be set to `git.yourdomain.com` -
|
||||||
if this option is not set it will be served on `forgejo.yourdomain.com` instead.
|
if this option is not set it will be served on `forgejo.yourdomain.com` instead.
|
||||||
|
|
||||||
For now forgejo will still need to be initially set up after installation.
|
For now forgejo will still need to be initially set up after installation.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
forgejo_version: 7
|
forgejo_version: 7
|
||||||
|
|
||||||
forgejo_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
forgejo_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
@ -30,3 +29,6 @@ forgejo_use_ci: false
|
||||||
# forgejo_ci_gitlab_secret:
|
# forgejo_ci_gitlab_secret:
|
||||||
# forgejo_ci_forgejo_client:
|
# forgejo_ci_forgejo_client:
|
||||||
# forgejo_ci_forgejo_secret:
|
# forgejo_ci_forgejo_secret:
|
||||||
|
# forgejo_ci_gitea_url:
|
||||||
|
# forgejo_ci_gitea_client:
|
||||||
|
# forgejo_ci_gitea_secret:
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Light-weight git hosting
|
description: Light-weight git hosting
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
platforms:
|
platforms:
|
||||||
- name: GenericLinux
|
- name: GenericLinux
|
||||||
versions: all
|
versions:
|
||||||
|
- all
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,3 @@
|
||||||
- apt
|
- apt
|
||||||
- download
|
- download
|
||||||
- packages
|
- packages
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/app/forgejo/"
|
path: "/app/forgejo/"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0770'
|
mode: "0770"
|
||||||
owner: "{{ git_user['uid'] }}"
|
owner: "{{ git_user['uid'] }}"
|
||||||
group: "{{ git_user['group'] }}"
|
group: "{{ git_user['group'] }}"
|
||||||
become: true
|
become: true
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
dest: "/app/forgejo/forgejo"
|
dest: "/app/forgejo/forgejo"
|
||||||
owner: "{{ git_user['uid'] }}"
|
owner: "{{ git_user['uid'] }}"
|
||||||
group: "{{ git_user['group'] }}"
|
group: "{{ git_user['group'] }}"
|
||||||
mode: '0750'
|
mode: "0750"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Host machine forgejo command points to passthrough command
|
- name: Host machine forgejo command points to passthrough command
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,8 @@ services:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if forgejo_ci_gitlab_client is not undefined and not None and forgejo_ci_gitlab_secret is not undefined and not None %}
|
{% if forgejo_ci_gitlab_client is not undefined and not None and forgejo_ci_gitlab_secret is not undefined and not None %}
|
||||||
- WOODPECKER_GITLAB=true
|
- WOODPECKER_GITLAB=true
|
||||||
- WOODPECKER_gitlab_CLIENT={{ forgejo_ci_gitlab_client }}
|
- WOODPECKER_GITLAB_CLIENT={{ forgejo_ci_gitlab_client }}
|
||||||
- WOODPECKER_gitlab_SECRET={{ forgejo_ci_gitlab_secret }}
|
- WOODPECKER_GITLAB_SECRET={{ forgejo_ci_gitlab_secret }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if forgejo_ci_forgejo_client is not undefined and not None and forgejo_ci_forgejo_secret is not undefined and not None %}
|
{% if forgejo_ci_forgejo_client is not undefined and not None and forgejo_ci_forgejo_secret is not undefined and not None %}
|
||||||
- WOODPECKER_FORGEJO=true
|
- WOODPECKER_FORGEJO=true
|
||||||
|
|
@ -90,6 +90,12 @@ services:
|
||||||
- WOODPECKER_FORGEJO_CLIENT={{ forgejo_ci_forgejo_client }}
|
- WOODPECKER_FORGEJO_CLIENT={{ forgejo_ci_forgejo_client }}
|
||||||
- WOODPECKER_FORGEJO_SECRET={{ forgejo_ci_forgejo_secret }}
|
- WOODPECKER_FORGEJO_SECRET={{ forgejo_ci_forgejo_secret }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if forgejo_ci_gitea_url is not undefined and not None and forgejo_ci_gitea_client is not undefined and not None and forgejo_ci_gitea_secret is not undefined and not None %}
|
||||||
|
- WOODPECKER_GITEA=true
|
||||||
|
- "WOODPECKER_GITEA_URL={{ (forgejo_use_https == True) | ternary('https', 'http') }}://{{ (subdomain_alias is not undefined and not none) | ternary(subdomain_alias, stack_name) }}.{{server_domain}}"
|
||||||
|
- WOODPECKER_GITEA_CLIENT={{ forgejo_ci_gitea_client }}
|
||||||
|
- WOODPECKER_GITEA_SECRET={{ forgejo_ci_gitea_secret }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
wp-agent:
|
wp-agent:
|
||||||
image: woodpeckerci/woodpecker-agent:latest
|
image: woodpeckerci/woodpecker-agent:latest
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: forgejo
|
stack_name: forgejo
|
||||||
|
|
||||||
stack_image: "codeberg.org/forgejo/forgejo"
|
stack_image: "codeberg.org/forgejo/forgejo"
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
# landingpage
|
# landingpage
|
||||||
|
|
||||||
The public face of my server.
|
The public face of my server.
|
||||||
Not much to see here honestly,
|
Not much to see here honestly,
|
||||||
just a few simple lines of html explaining what this server is about and how to contact me.
|
just a few simple lines of html explaining what this server is about and how to contact me.
|
||||||
|
|
||||||
I don't see anybody else benefiting massively from this role but me,
|
I don't see anybody else benefiting massively from this role but me,
|
||||||
but if you want the same web presence go for it I suppose 😉
|
but if you want the same web presence go for it I suppose 😉
|
||||||
|
|
||||||
## Defaults
|
## Defaults
|
||||||
|
|
@ -31,7 +31,6 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: www
|
subdomain_alias: www
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `www.yourdomain.com` -
|
By default, it will be set to `www.yourdomain.com` -
|
||||||
if this option is not set it will be served on `landingpage.yourdomain.com` instead.
|
if this option is not set it will be served on `landingpage.yourdomain.com` instead.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
landingpage_version: latest
|
landingpage_version: latest
|
||||||
|
|
||||||
landingpage_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
landingpage_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ landingpage_upstream_file_dir }}"
|
path: "{{ landingpage_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update landingpage upstream"
|
listen: "update landingpage upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ landingpage_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (landingpage_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ landingpage_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (landingpage_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update landingpage upstream"
|
listen: "update landingpage upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update landingpage upstream"
|
listen: "update landingpage upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs my personal public facing landing page as a docker stack service
|
description: Installs my personal public facing landing page as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update landingpage upstream"
|
notify: "update landingpage upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: landingpage
|
stack_name: landingpage
|
||||||
|
|
||||||
stack_image: "martyo/cloudserve-landing"
|
stack_image: "martyo/cloudserve-landing"
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,6 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: rss
|
subdomain_alias: rss
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `rss.yourdomain.com` -
|
By default, it will be set to `rss.yourdomain.com` -
|
||||||
if this option is not set it will be served on `miniflux.yourdomain.com` instead.
|
if this option is not set it will be served on `miniflux.yourdomain.com` instead.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
miniflux_version: latest
|
miniflux_version: latest
|
||||||
|
|
||||||
miniflux_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
miniflux_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ miniflux_upstream_file_dir }}"
|
path: "{{ miniflux_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update miniflux upstream"
|
listen: "update miniflux upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ miniflux_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (miniflux_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ miniflux_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (miniflux_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update miniflux upstream"
|
listen: "update miniflux upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update miniflux upstream"
|
listen: "update miniflux upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs miniflux as a docker stack service
|
description: Installs miniflux as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update miniflux upstream"
|
notify: "update miniflux upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: miniflux
|
stack_name: miniflux
|
||||||
|
|
||||||
stack_image: "miniflux/miniflux"
|
stack_image: "miniflux/miniflux"
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: prm
|
subdomain_alias: prm
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `prm.yourdomain.com` (personal relationship manager) -
|
By default, it will be set to `prm.yourdomain.com` (personal relationship manager) -
|
||||||
if this option is not set it will be served on `monica.yourdomain.com` instead.
|
if this option is not set it will be served on `monica.yourdomain.com` instead.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -38,14 +38,14 @@ monica_db_password: mymonicadbpassword
|
||||||
```
|
```
|
||||||
|
|
||||||
Set the default username and password combination on first container start.
|
Set the default username and password combination on first container start.
|
||||||
If loading from an existing volume this does nothing, otherwise it sets the
|
If loading from an existing volume this does nothing, otherwise it sets the
|
||||||
first user so you can instantly log in.
|
first user so you can instantly log in.
|
||||||
|
|
||||||
```
|
```
|
||||||
monica_app_disable_signups: true
|
monica_app_disable_signups: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Sets the behavior on the login screen ---
|
Sets the behavior on the login screen ---
|
||||||
if set to true (default) will not let anyone but the first user sign up,
|
if set to true (default) will not let anyone but the first user sign up,
|
||||||
who automatically becomes an administrative user.
|
who automatically becomes an administrative user.
|
||||||
If set to false will allow multiple users to sign up on the instance.
|
If set to false will allow multiple users to sign up on the instance.
|
||||||
|
|
@ -57,13 +57,13 @@ monica_app_weather_api_key: <your-darksky-key>
|
||||||
|
|
||||||
If `monica_app_geolocation_api_key` is set, Monica will translate addresses
|
If `monica_app_geolocation_api_key` is set, Monica will translate addresses
|
||||||
input into the app to geographical latitude/ longitude data.
|
input into the app to geographical latitude/ longitude data.
|
||||||
It requires an api key from https://locationiq.com/, which are free for
|
It requires an api key from https://locationiq.com/, which are free for
|
||||||
10.000 daily requests.
|
10.000 daily requests.
|
||||||
|
|
||||||
Similarly, if `monica_app_weather_api_key` is set, monica will (afaik) show
|
Similarly, if `monica_app_weather_api_key` is set, monica will (afaik) show
|
||||||
weather data for the location of individual contacts.
|
weather data for the location of individual contacts.
|
||||||
It requires an API key from https://darksky.net/dev/register, where
|
It requires an API key from https://darksky.net/dev/register, where
|
||||||
1.000 daily requests are free.
|
1.000 daily requests are free.
|
||||||
Be aware, however, that since darksky's sale to Apple, no new API signups are possible.
|
Be aware, however, that since darksky's sale to Apple, no new API signups are possible.
|
||||||
To use this feature, `monica_app_geolocation_api_key` must also be filled out.
|
To use this feature, `monica_app_geolocation_api_key` must also be filled out.
|
||||||
|
|
||||||
|
|
@ -71,8 +71,8 @@ To use this feature, `monica_app_geolocation_api_key` must also be filled out.
|
||||||
monica_mail_host: smtp.eu.mailgun.org
|
monica_mail_host: smtp.eu.mailgun.org
|
||||||
monica_mail_port: 465
|
monica_mail_port: 465
|
||||||
monica_mail_encryption: tls
|
monica_mail_encryption: tls
|
||||||
monica_mail_username:
|
monica_mail_username:
|
||||||
monica_mail_password:
|
monica_mail_password:
|
||||||
monica_mail_from: monica@yourserver.com
|
monica_mail_from: monica@yourserver.com
|
||||||
monica_mail_from_name: Monica
|
monica_mail_from_name: Monica
|
||||||
monica_mail_new_user_notification_address: "{{ caddy_email }}"
|
monica_mail_new_user_notification_address: "{{ caddy_email }}"
|
||||||
|
|
@ -81,5 +81,5 @@ monica_mail_new_user_notification_address: "{{ caddy_email }}"
|
||||||
Sets up the necessary details for Monica to send out registration and reminder e-mails.
|
Sets up the necessary details for Monica to send out registration and reminder e-mails.
|
||||||
Requires an smtp server set up, most easily doable through things like mailgun or sendgrid.
|
Requires an smtp server set up, most easily doable through things like mailgun or sendgrid.
|
||||||
Variables should be relatively self-explanatory,
|
Variables should be relatively self-explanatory,
|
||||||
with `monica_mail_new_user_notification_address` being the address the notifications should be sent *to*,
|
with `monica_mail_new_user_notification_address` being the address the notifications should be sent _to_,
|
||||||
so in all probability some sort of administration address.
|
so in all probability some sort of administration address.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
monica_version: latest
|
monica_version: latest
|
||||||
|
|
||||||
monica_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
monica_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
@ -19,8 +18,8 @@ monica_db_password: mymonicadbpassword
|
||||||
#monica_app_weather_api_key:
|
#monica_app_weather_api_key:
|
||||||
|
|
||||||
#monica_mail_host: smtp.eu.mailgun.org
|
#monica_mail_host: smtp.eu.mailgun.org
|
||||||
#monica_mail_username:
|
#monica_mail_username:
|
||||||
#monica_mail_password:
|
#monica_mail_password:
|
||||||
monica_mail_port: 465
|
monica_mail_port: 465
|
||||||
monica_mail_encryption: tls
|
monica_mail_encryption: tls
|
||||||
#monica_mail_from: monica@yourserver.com
|
#monica_mail_from: monica@yourserver.com
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ monica_upstream_file_dir }}"
|
path: "{{ monica_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update monica upstream"
|
listen: "update monica upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ monica_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (monica_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ monica_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (monica_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update monica upstream"
|
listen: "update monica upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update monica upstream"
|
listen: "update monica upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs monica as a docker stack service
|
description: Installs monica as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,3 @@
|
||||||
- apt
|
- apt
|
||||||
- download
|
- download
|
||||||
- packages
|
- packages
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,7 @@
|
||||||
ansible.builtin.shell: echo -n 'base64:'; openssl rand -base64 32
|
ansible.builtin.shell: echo -n 'base64:'; openssl rand -base64 32
|
||||||
register: monica_app_key
|
register: monica_app_key
|
||||||
|
|
||||||
- set_fact:
|
- set_fact: monica_app_key={{ monica_app_key.stdout }}
|
||||||
monica_app_key={{ monica_app_key.stdout }}
|
|
||||||
|
|
||||||
## install container
|
## install container
|
||||||
- name: Check upstream status
|
- name: Check upstream status
|
||||||
|
|
@ -37,4 +36,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update monica upstream"
|
notify: "update monica upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: monica
|
stack_name: monica
|
||||||
|
|
||||||
stack_image: "monica"
|
stack_image: "monica"
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,14 @@ A full office suite and groupware proposition,
|
||||||
though its main draw for most is the file synchronization abilities.
|
though its main draw for most is the file synchronization abilities.
|
||||||
AKA Dropbox replacement.
|
AKA Dropbox replacement.
|
||||||
|
|
||||||
This software can grow enormous and enormously complicated,
|
This software can grow enormous and enormously complicated,
|
||||||
this Ansible setup role concentrates on 3 things:
|
this Ansible setup role concentrates on 3 things:
|
||||||
* a stable and secure base setup from the official docker container
|
|
||||||
* automatic setup of an email pipeline so users can reset passwords and be updated of changes
|
|
||||||
* the ability to use S3 object storage as the primary way of storing users' files
|
|
||||||
|
|
||||||
The rest should be taken care of either automatically,
|
- a stable and secure base setup from the official docker container
|
||||||
|
- automatic setup of an email pipeline so users can reset passwords and be updated of changes
|
||||||
|
- the ability to use S3 object storage as the primary way of storing users' files
|
||||||
|
|
||||||
|
The rest should be taken care of either automatically,
|
||||||
or supplied after the fact (if using different plugins or similar).
|
or supplied after the fact (if using different plugins or similar).
|
||||||
|
|
||||||
## Defaults
|
## Defaults
|
||||||
|
|
@ -32,7 +33,7 @@ nextcloud_version: fpm
|
||||||
nextcloud_db_version: 12
|
nextcloud_db_version: 12
|
||||||
```
|
```
|
||||||
|
|
||||||
The docker image version to be used in stack creation.
|
The docker image version to be used in stack creation.
|
||||||
The role sets up the `php-fpm` version of the official Nextcloud image.
|
The role sets up the `php-fpm` version of the official Nextcloud image.
|
||||||
That means, Caddy is used in front as the server which presents all pages
|
That means, Caddy is used in front as the server which presents all pages
|
||||||
and access to files, the Nextcloud image itself only serves as the PHP data store.
|
and access to files, the Nextcloud image itself only serves as the PHP data store.
|
||||||
|
|
@ -41,17 +42,17 @@ If changing the version to one relying on Nextcloud's in-built Apache server,
|
||||||
take care to change where the upstream proxy is pointing to since the Caddy server in front loses its meaning.
|
take care to change where the upstream proxy is pointing to since the Caddy server in front loses its meaning.
|
||||||
|
|
||||||
The second variable points to the docker image that should be used for the PostgreSQL database,
|
The second variable points to the docker image that should be used for the PostgreSQL database,
|
||||||
with 12 pre-filled as default.
|
with 12 pre-filled as default.
|
||||||
You can put this to latest, but should take care to migrate the database correctly when an update rolls around,
|
You can put this to latest, but should take care to migrate the database correctly when an update rolls around,
|
||||||
or it *will* destroy your data at some point.
|
or it _will_ destroy your data at some point.
|
||||||
Generally, it seems easier to pin this to a specific version and then only update manually.
|
Generally, it seems easier to pin this to a specific version and then only update manually.
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
subdomain_alias: files
|
subdomain_alias: files
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `files.yourdomain.com` -
|
By default, it will be set to `files.yourdomain.com` -
|
||||||
if this option is not set it will be served on `nextcloud.yourdomain.com` instead.
|
if this option is not set it will be served on `nextcloud.yourdomain.com` instead.
|
||||||
If you change or delete this, you should also change what `nextcloud_trusted_domains` points to.
|
If you change or delete this, you should also change what `nextcloud_trusted_domains` points to.
|
||||||
|
|
||||||
|
|
@ -66,7 +67,7 @@ nextcloud_db_password: secretnextcloud
|
||||||
```
|
```
|
||||||
|
|
||||||
Sets the default username and password for application and database.
|
Sets the default username and password for application and database.
|
||||||
All of these variables are necessary to circumvent the manual installation process
|
All of these variables are necessary to circumvent the manual installation process
|
||||||
you would usually be faced with on first creating a Nextcloud instance.
|
you would usually be faced with on first creating a Nextcloud instance.
|
||||||
Ideally change all of these for your personal setup,
|
Ideally change all of these for your personal setup,
|
||||||
but it is especially important to change the app admin login data since they are what is public facing.
|
but it is especially important to change the app admin login data since they are what is public facing.
|
||||||
|
|
@ -77,7 +78,7 @@ nextcloud_trusted_domains: "{{ subdomain_alias }}.{{ server_domain }}"
|
||||||
|
|
||||||
The domains that are allowed to access your Nextcloud instance.
|
The domains that are allowed to access your Nextcloud instance.
|
||||||
Should point to any domains that you want it accessible on,
|
Should point to any domains that you want it accessible on,
|
||||||
can be a space-separated list of them.
|
can be a space-separated list of them.
|
||||||
Take care to include the sub-domain if your are accessing it through one of them.
|
Take care to include the sub-domain if your are accessing it through one of them.
|
||||||
[Further explanation](https://blog.martyoeh.me/posts/2021-11-18-nextcloud-trusted-domains/).
|
[Further explanation](https://blog.martyoeh.me/posts/2021-11-18-nextcloud-trusted-domains/).
|
||||||
|
|
||||||
|
|
@ -130,7 +131,6 @@ If your details are correct, Nextcloud should automatically set up S3 as its pri
|
||||||
|
|
||||||
Be careful if you switch an existing data volume of the Nextcloud image to S3
|
Be careful if you switch an existing data volume of the Nextcloud image to S3
|
||||||
as you will lose all access to existing files.
|
as you will lose all access to existing files.
|
||||||
The files *should* not be deleted at this point,
|
The files _should_ not be deleted at this point,
|
||||||
only access will be lost,
|
only access will be lost,
|
||||||
but you are playing with fire at this point.
|
but you are playing with fire at this point.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
# set preferred application version
|
# set preferred application version
|
||||||
nextcloud_version: 28-fpm-alpine
|
nextcloud_version: 29-fpm-alpine
|
||||||
# set preferred postgres version
|
# set preferred postgres version
|
||||||
nextcloud_db_version: 12-alpine
|
nextcloud_db_version: 12-alpine
|
||||||
|
|
||||||
|
|
@ -31,7 +30,6 @@ nextcloud_smtp_authtype: LOGIN
|
||||||
# nextcloud_smtp_password: <smtp-password>
|
# nextcloud_smtp_password: <smtp-password>
|
||||||
nextcloud_smtp_from_address: noreply
|
nextcloud_smtp_from_address: noreply
|
||||||
nextcloud_smtp_from_domain: "{{ server_domain }}"
|
nextcloud_smtp_from_domain: "{{ server_domain }}"
|
||||||
|
|
||||||
# the following block is required *fully* for primary object storage
|
# the following block is required *fully* for primary object storage
|
||||||
# nextcloud_s3_host: s3.eu-central-1.wasabisys.com
|
# nextcloud_s3_host: s3.eu-central-1.wasabisys.com
|
||||||
# nextcloud_s3_bucket: nextcloud
|
# nextcloud_s3_bucket: nextcloud
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ nextcloud_upstream_file_dir }}"
|
path: "{{ nextcloud_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update nextcloud upstream"
|
listen: "update nextcloud upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ nextcloud_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (nextcloud_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ nextcloud_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (nextcloud_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update nextcloud upstream"
|
listen: "update nextcloud upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update nextcloud upstream"
|
listen: "update nextcloud upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs nextcloud as a docker stack service
|
description: Installs nextcloud as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ nextcloud_upstream_file_dir }}"
|
path: "{{ nextcloud_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
notify: "update nextcloud upstream"
|
notify: "update nextcloud upstream"
|
||||||
|
|
||||||
|
|
@ -36,4 +36,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update nextcloud upstream"
|
notify: "update nextcloud upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: nextcloud
|
stack_name: nextcloud
|
||||||
|
|
||||||
stack_image: "nextcloud"
|
stack_image: "nextcloud"
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ The on-target directory where the proxy configuration file should be stashed.
|
||||||
ntfy_use_https: true
|
ntfy_use_https: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Whether the service should be reachable through http (port 80) or through https (port 443) and provision an https certificate.
|
Whether the service should be reachable through http (port 80) or through https (port 443) and provision an https certificate.
|
||||||
Usually you will want this to stay `true`,
|
Usually you will want this to stay `true`,
|
||||||
especially on the public facing web.
|
especially on the public facing web.
|
||||||
|
|
||||||
|
|
@ -33,8 +33,8 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: push
|
subdomain_alias: push
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `push.yourdomain.com` -
|
By default, it will be set to `push.yourdomain.com` -
|
||||||
if this option is not set it will be served on `ntfy.yourdomain.com` instead.
|
if this option is not set it will be served on `ntfy.yourdomain.com` instead.
|
||||||
|
|
||||||
The individual `ntfy` options to be changed are very well described on
|
The individual `ntfy` options to be changed are very well described on
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ ntfy_upstream_file_dir }}"
|
path: "{{ ntfy_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update ntfy upstream"
|
listen: "update ntfy upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,6 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ ntfy_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (ntfy_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ ntfy_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (ntfy_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update ntfy upstream"
|
listen: "update ntfy upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs a self-hosted push notification service through docker-swarm.
|
description: Installs a self-hosted push notification service through docker-swarm.
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ ntfy_upstream_file_dir }}"
|
path: "{{ ntfy_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Move ntfy configuration file to target dir
|
- name: Move ntfy configuration file to target dir
|
||||||
|
|
@ -35,4 +35,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update ntfy upstream"
|
notify: "update ntfy upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: ntfy
|
stack_name: ntfy
|
||||||
|
|
||||||
stack_image: "binwiederhier/ntfy"
|
stack_image: "binwiederhier/ntfy"
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: search
|
subdomain_alias: search
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `search.yourdomain.com` -
|
By default, it will be set to `search.yourdomain.com` -
|
||||||
if this option is not set it will be served on `searx.yourdomain.com` instead.
|
if this option is not set it will be served on `searx.yourdomain.com` instead.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -39,11 +39,11 @@ searx_authentication:
|
||||||
By default, the searx instance is not protected with a login, however you
|
By default, the searx instance is not protected with a login, however you
|
||||||
can have caddy provide a basic auth login form by using this variable.
|
can have caddy provide a basic auth login form by using this variable.
|
||||||
|
|
||||||
You can either change the login to suit you by generating a combination
|
You can either change the login to suit you by generating a combination
|
||||||
(or multiple, it will also work with an arbitrary amount of logins),
|
(or multiple, it will also work with an arbitrary amount of logins),
|
||||||
or remove the necessity to login altogether by not setting the
|
or remove the necessity to login altogether by not setting the
|
||||||
`searx_authentication` variable to anything.
|
`searx_authentication` variable to anything.
|
||||||
|
|
||||||
The password needs to be in a hashed format, which is easiest to accomplish
|
The password needs to be in a hashed format, which is easiest to accomplish
|
||||||
with the help of caddy itself --- simply doing `caddy hash-password` will
|
with the help of caddy itself --- simply doing `caddy hash-password` will
|
||||||
allow you to create a new hashed password.
|
allow you to create a new hashed password.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
searx_version: latest
|
searx_version: latest
|
||||||
|
|
||||||
searx_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
searx_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
@ -8,7 +7,6 @@ searx_use_https: true
|
||||||
|
|
||||||
# the subdomain link searx will be reachable under
|
# the subdomain link searx will be reachable under
|
||||||
subdomain_alias: search
|
subdomain_alias: search
|
||||||
|
|
||||||
# searx_authentication:
|
# searx_authentication:
|
||||||
# - username: mysearxusername
|
# - username: mysearxusername
|
||||||
# password: JDJhJDE0JFdjUnQ5WWllcU8wa01xS0JBS2dlMy5zMEhRTmxqTXdIZmdjcTN6ZGFwRjJlYUdoSHAwRUhL # mysearxpassword
|
# password: JDJhJDE0JFdjUnQ5WWllcU8wa01xS0JBS2dlMy5zMEhRTmxqTXdIZmdjcTN6ZGFwRjJlYUdoSHAwRUhL # mysearxpassword
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ searx_upstream_file_dir }}"
|
path: "{{ searx_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update searx upstream"
|
listen: "update searx upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ searx_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (searx_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ searx_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (searx_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update searx upstream"
|
listen: "update searx upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update searx upstream"
|
listen: "update searx upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs searx as a docker stack service
|
description: Installs searx as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update searx upstream"
|
notify: "update searx upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: searx
|
stack_name: searx
|
||||||
|
|
||||||
stack_image: "searxng/searxng"
|
stack_image: "searxng/searxng"
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
A simple and fast bookmark manager.
|
A simple and fast bookmark manager.
|
||||||
Can be deployed in minutes and takes minimum amount of resources.
|
Can be deployed in minutes and takes minimum amount of resources.
|
||||||
|
|
||||||
Be aware that shaarli installations can *not* be fully automated.
|
Be aware that shaarli installations can _not_ be fully automated.
|
||||||
That means after running this ansible role you will still have to setup up the first run wizard and create a user and so forth
|
That means after running this ansible role you will still have to setup up the first run wizard and create a user and so forth
|
||||||
(if not running with an existing data-store).
|
(if not running with an existing data-store).
|
||||||
Do this quickly after setup,
|
Do this quickly after setup,
|
||||||
*especially* if your instance is public-facing!
|
_especially_ if your instance is public-facing!
|
||||||
{: .alert .alert-warning}
|
{: .alert .alert-warning}
|
||||||
|
|
||||||
## Defaults
|
## Defaults
|
||||||
|
|
@ -34,7 +34,6 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: links
|
subdomain_alias: links
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `links.yourdomain.com` -
|
By default, it will be set to `links.yourdomain.com` -
|
||||||
if this option is not set it will be served on `shaarli.yourdomain.com` instead.
|
if this option is not set it will be served on `shaarli.yourdomain.com` instead.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
shaarli_version: release # they offer: latest and release (stable) versions
|
shaarli_version: release # they offer: latest and release (stable) versions
|
||||||
|
|
||||||
shaarli_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
shaarli_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ shaarli_upstream_file_dir }}"
|
path: "{{ shaarli_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update shaarli upstream"
|
listen: "update shaarli upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ shaarli_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (shaarli_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ shaarli_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (shaarli_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update shaarli upstream"
|
listen: "update shaarli upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update shaarli upstream"
|
listen: "update shaarli upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs shaarli as a docker stack service
|
description: Installs shaarli as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update shaarli upstream"
|
notify: "update shaarli upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: shaarli
|
stack_name: shaarli
|
||||||
|
|
||||||
stack_image: "ghcr.io/shaarli/shaarli"
|
stack_image: "ghcr.io/shaarli/shaarli"
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ The docker image version to be used in stack creation.
|
||||||
subdomain_alias: time
|
subdomain_alias: time
|
||||||
```
|
```
|
||||||
|
|
||||||
If the deployed container should be served over a uri that is not the stack name.
|
If the deployed container should be served over a uri that is not the stack name.
|
||||||
By default, it will be set to `time.yourdomain.com` -
|
By default, it will be set to `time.yourdomain.com` -
|
||||||
if this option is not set it will be served on `traggo.yourdomain.com` instead.
|
if this option is not set it will be served on `traggo.yourdomain.com` instead.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -37,5 +37,5 @@ traggo_password: mytraggopassword
|
||||||
```
|
```
|
||||||
|
|
||||||
Set the default username and password combination on first container start.
|
Set the default username and password combination on first container start.
|
||||||
If loading from an existing volume this does nothing, otherwise it sets the
|
If loading from an existing volume this does nothing, otherwise it sets the
|
||||||
first user so you can instantly log in.
|
first user so you can instantly log in.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
traggo_version: latest
|
traggo_version: latest
|
||||||
|
|
||||||
traggo_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
traggo_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ traggo_upstream_file_dir }}"
|
path: "{{ traggo_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update traggo upstream"
|
listen: "update traggo upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ traggo_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (traggo_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ traggo_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (traggo_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update traggo upstream"
|
listen: "update traggo upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update traggo upstream"
|
listen: "update traggo upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs traggo as a docker stack service
|
description: Installs traggo as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update traggo upstream"
|
notify: "update traggo upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: traggo
|
stack_name: traggo
|
||||||
|
|
||||||
stack_image: "traggo/server"
|
stack_image: "traggo/server"
|
||||||
|
|
|
||||||
|
|
@ -39,4 +39,3 @@ stack_image: "wallabag/wallabag"
|
||||||
```
|
```
|
||||||
|
|
||||||
The docker hub image to be use in provisioning.
|
The docker hub image to be use in provisioning.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
wallabag_version: latest
|
wallabag_version: latest
|
||||||
|
|
||||||
wallabag_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
wallabag_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ wallabag_upstream_file_dir }}"
|
path: "{{ wallabag_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update wallabag upstream"
|
listen: "update wallabag upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ wallabag_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (wallabag_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ wallabag_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (wallabag_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update wallabag upstream"
|
listen: "update wallabag upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Marty Oehme
|
author: Marty Oehme
|
||||||
description: Installs wallabag as a docker stack service
|
description: Installs wallabag as a docker stack service
|
||||||
license: GPL-3.0-only
|
license: GPL-3.0-only
|
||||||
min_ansible_version: 2.9
|
min_ansible_version: "2.9"
|
||||||
galaxy_tags: []
|
galaxy_tags: []
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
stack_name: wallabag
|
stack_name: wallabag
|
||||||
|
|
||||||
stack_image: "wallabag/wallabag"
|
stack_image: "wallabag/wallabag"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
whoami_version: latest
|
whoami_version: latest
|
||||||
|
|
||||||
whoami_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack.name }}"
|
whoami_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack.name }}"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ whoami_upstream_file_dir }}"
|
path: "{{ whoami_upstream_file_dir }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
listen: "update whoami upstream"
|
listen: "update whoami upstream"
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
container: "{{ caddy_container_id }}"
|
container: "{{ caddy_container_id }}"
|
||||||
command: >
|
command: >
|
||||||
curl -X POST -H "Content-Type: application/json" -d @{{ whoami_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (whoami_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
curl -X POST -H "Content-Type: application/json" -d @{{ whoami_upstream_file_dir }}/upstream.json localhost:2019/config/apps/http/servers/{{ (whoami_use_https == True) | ternary(caddy_https_server_name, caddy_http_server_name) }}/routes/0/
|
||||||
become: true
|
become: true
|
||||||
listen: "update whoami upstream"
|
listen: "update whoami upstream"
|
||||||
|
|
||||||
|
|
@ -50,4 +50,3 @@
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
listen: "update whoami upstream"
|
listen: "update whoami upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- docker
|
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
- caddy
|
- caddy_id
|
||||||
|
|
|
||||||
|
|
@ -22,4 +22,3 @@
|
||||||
tags:
|
tags:
|
||||||
- docker-swarm
|
- docker-swarm
|
||||||
notify: "update whoami upstream"
|
notify: "update whoami upstream"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
stack:
|
stack:
|
||||||
name: whoami
|
name: whoami
|
||||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||||
|
|
|
||||||
22
site.yml
22
site.yml
|
|
@ -21,13 +21,13 @@
|
||||||
- name: Install caddy reverse proxy
|
- name: Install caddy reverse proxy
|
||||||
import_role:
|
import_role:
|
||||||
role: caddy
|
role: caddy
|
||||||
tags:
|
tags:
|
||||||
- caddy
|
- caddy
|
||||||
|
|
||||||
- name: Grab caddy container id for all following services
|
- name: Grab caddy container id for all following services
|
||||||
import_role:
|
import_role:
|
||||||
role: caddy_id
|
role: caddy_id
|
||||||
tags:
|
tags:
|
||||||
- caddy_id
|
- caddy_id
|
||||||
- always
|
- always
|
||||||
|
|
||||||
|
|
@ -49,12 +49,16 @@
|
||||||
- name: Install traggo
|
- name: Install traggo
|
||||||
import_role:
|
import_role:
|
||||||
role: traggo
|
role: traggo
|
||||||
tags: traggo
|
tags:
|
||||||
|
- traggo
|
||||||
|
- never
|
||||||
|
|
||||||
- name: Install monica
|
- name: Install monica
|
||||||
import_role:
|
import_role:
|
||||||
role: monica
|
role: monica
|
||||||
tags: monica
|
tags:
|
||||||
|
- monica
|
||||||
|
- never
|
||||||
|
|
||||||
- name: Install nextcloud
|
- name: Install nextcloud
|
||||||
import_role:
|
import_role:
|
||||||
|
|
@ -79,4 +83,12 @@
|
||||||
- name: Install ntfy
|
- name: Install ntfy
|
||||||
import_role:
|
import_role:
|
||||||
role: ntfy
|
role: ntfy
|
||||||
tags: ntfy
|
tags:
|
||||||
|
- ntfy
|
||||||
|
- never
|
||||||
|
|
||||||
|
- name: Install diun
|
||||||
|
import_role:
|
||||||
|
role: diun
|
||||||
|
tags:
|
||||||
|
- diun
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue