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
|
|
@ -32,7 +32,6 @@ 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,
|
||||
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
|
||||
|
||||
Most variables to be changed should be set either through `group_variables` or `host_variables`.
|
||||
|
|
|
|||
|
|
@ -1,22 +1,21 @@
|
|||
---
|
||||
|
||||
docker_swarm_advertise_addr: eth1
|
||||
|
||||
caddy_use_debug: yes
|
||||
caddy_tls_use_staging: yes
|
||||
|
||||
blog_use_https: no
|
||||
caddy_use_https: no
|
||||
forgejo_use_https: no
|
||||
blog_use_https: no
|
||||
caddy_use_https: no
|
||||
forgejo_use_https: no
|
||||
landingpage_use_https: no
|
||||
miniflux_use_https: no
|
||||
monica_use_https: no
|
||||
nextcloud_use_https: no
|
||||
ntfy_use_https: no
|
||||
searx_use_https: no
|
||||
shaarli_use_https: no
|
||||
traggo_use_https: no
|
||||
wallabag_use_https: no
|
||||
whoami_use_https: no
|
||||
miniflux_use_https: no
|
||||
monica_use_https: no
|
||||
nextcloud_use_https: no
|
||||
ntfy_use_https: no
|
||||
searx_use_https: no
|
||||
shaarli_use_https: no
|
||||
traggo_use_https: no
|
||||
wallabag_use_https: no
|
||||
whoami_use_https: no
|
||||
|
||||
server_domain: ansible.test
|
||||
|
|
|
|||
|
|
@ -48,13 +48,12 @@ caddy_version: alpine
|
|||
|
||||
Sets the docker image version to be used.
|
||||
|
||||
|
||||
## Internal variables
|
||||
|
||||
```yaml
|
||||
caddy_stack:
|
||||
name: caddy
|
||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
name: caddy
|
||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
```
|
||||
|
||||
Defines the actual docker stack which will later run on the target.
|
||||
|
|
@ -64,12 +63,12 @@ The compose option defines which template to use for the `docker-stack.yml` file
|
|||
or directly here like the following:
|
||||
|
||||
```yaml
|
||||
compose:
|
||||
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
- version: '3'
|
||||
services:
|
||||
another-container:
|
||||
image: nginx:latest
|
||||
compose:
|
||||
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
- version: "3"
|
||||
services:
|
||||
another-container:
|
||||
image: nginx:latest
|
||||
# ...
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
|
||||
caddy_version: alpine
|
||||
caddy_version: 2.8.4-alpine # tag exact version to avoid suprising container renewals
|
||||
caddy_caddyfile_dir: "{{ docker_stack_files_dir }}/caddy"
|
||||
|
||||
caddy_use_debug: no
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
---
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
caddy_stack:
|
||||
name: caddy
|
||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
|
|
|
|||
|
|
@ -48,13 +48,12 @@ caddy_version: alpine
|
|||
|
||||
Sets the docker image version to be used.
|
||||
|
||||
|
||||
## Internal variables
|
||||
|
||||
```yaml
|
||||
caddy_stack:
|
||||
name: caddy
|
||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
name: caddy
|
||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
```
|
||||
|
||||
Defines the actual docker stack which will later run on the target.
|
||||
|
|
@ -64,12 +63,12 @@ The compose option defines which template to use for the `docker-stack.yml` file
|
|||
or directly here like the following:
|
||||
|
||||
```yaml
|
||||
compose:
|
||||
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
- version: '3'
|
||||
services:
|
||||
another-container:
|
||||
image: nginx:latest
|
||||
compose:
|
||||
- "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
- version: "3"
|
||||
services:
|
||||
another-container:
|
||||
image: nginx:latest
|
||||
# ...
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
---
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- 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_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:
|
||||
path: "{{ docker_stack_files_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
tags:
|
||||
- fs
|
||||
|
|
|
|||
|
|
@ -30,7 +30,18 @@
|
|||
- repository
|
||||
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:
|
||||
name: "{{ packages }}"
|
||||
state: latest
|
||||
|
|
@ -38,6 +49,8 @@
|
|||
- apt
|
||||
- download
|
||||
- packages
|
||||
- docker
|
||||
- never
|
||||
become: true
|
||||
notify: Handle docker daemon
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
forgejo_version: 7
|
||||
|
||||
forgejo_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
@ -30,3 +29,6 @@ forgejo_use_ci: false
|
|||
# forgejo_ci_gitlab_secret:
|
||||
# forgejo_ci_forgejo_client:
|
||||
# forgejo_ci_forgejo_secret:
|
||||
# forgejo_ci_gitea_url:
|
||||
# forgejo_ci_gitea_client:
|
||||
# forgejo_ci_gitea_secret:
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Light-weight git hosting
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
platforms:
|
||||
- name: GenericLinux
|
||||
versions: all
|
||||
versions:
|
||||
- all
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -9,4 +9,3 @@
|
|||
- apt
|
||||
- download
|
||||
- packages
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "/app/forgejo/"
|
||||
state: directory
|
||||
mode: '0770'
|
||||
mode: "0770"
|
||||
owner: "{{ git_user['uid'] }}"
|
||||
group: "{{ git_user['group'] }}"
|
||||
become: true
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
dest: "/app/forgejo/forgejo"
|
||||
owner: "{{ git_user['uid'] }}"
|
||||
group: "{{ git_user['group'] }}"
|
||||
mode: '0750'
|
||||
mode: "0750"
|
||||
become: true
|
||||
|
||||
- name: Host machine forgejo command points to passthrough command
|
||||
|
|
|
|||
|
|
@ -81,8 +81,8 @@ services:
|
|||
{% endif %}
|
||||
{% 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_CLIENT={{ forgejo_ci_gitlab_client }}
|
||||
- WOODPECKER_gitlab_SECRET={{ forgejo_ci_gitlab_secret }}
|
||||
- WOODPECKER_GITLAB_CLIENT={{ forgejo_ci_gitlab_client }}
|
||||
- WOODPECKER_GITLAB_SECRET={{ forgejo_ci_gitlab_secret }}
|
||||
{% endif %}
|
||||
{% 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
|
||||
|
|
@ -90,6 +90,12 @@ services:
|
|||
- WOODPECKER_FORGEJO_CLIENT={{ forgejo_ci_forgejo_client }}
|
||||
- WOODPECKER_FORGEJO_SECRET={{ forgejo_ci_forgejo_secret }}
|
||||
{% 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:
|
||||
image: woodpeckerci/woodpecker-agent:latest
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: forgejo
|
||||
|
||||
stack_image: "codeberg.org/forgejo/forgejo"
|
||||
|
|
|
|||
|
|
@ -34,4 +34,3 @@ subdomain_alias: www
|
|||
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` -
|
||||
if this option is not set it will be served on `landingpage.yourdomain.com` instead.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
landingpage_version: latest
|
||||
|
||||
landingpage_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ landingpage_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update landingpage upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update landingpage upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs my personal public facing landing page as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -21,4 +21,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update landingpage upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: landingpage
|
||||
|
||||
stack_image: "martyo/cloudserve-landing"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
miniflux_version: latest
|
||||
|
||||
miniflux_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ miniflux_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update miniflux upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update miniflux upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs miniflux as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -21,4 +21,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update miniflux upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: miniflux
|
||||
|
||||
stack_image: "miniflux/miniflux"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
Requires an smtp server set up, most easily doable through things like mailgun or sendgrid.
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
monica_version: latest
|
||||
|
||||
monica_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ monica_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update monica upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update monica upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs monica as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -9,4 +9,3 @@
|
|||
- apt
|
||||
- download
|
||||
- packages
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@
|
|||
ansible.builtin.shell: echo -n 'base64:'; openssl rand -base64 32
|
||||
register: monica_app_key
|
||||
|
||||
- set_fact:
|
||||
monica_app_key={{ monica_app_key.stdout }}
|
||||
- set_fact: monica_app_key={{ monica_app_key.stdout }}
|
||||
|
||||
## install container
|
||||
- name: Check upstream status
|
||||
|
|
@ -37,4 +36,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update monica upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: monica
|
||||
|
||||
stack_image: "monica"
|
||||
|
|
|
|||
|
|
@ -6,9 +6,10 @@ AKA Dropbox replacement.
|
|||
|
||||
This software can grow enormous and enormously complicated,
|
||||
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
|
||||
|
||||
- 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).
|
||||
|
|
@ -43,7 +44,7 @@ take care to change where the upstream proxy is pointing to since the Caddy serv
|
|||
The second variable points to the docker image that should be used for the PostgreSQL database,
|
||||
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,
|
||||
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.
|
||||
|
||||
```yml
|
||||
|
|
@ -51,7 +52,7 @@ subdomain_alias: files
|
|||
```
|
||||
|
||||
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 you change or delete this, you should also change what `nextcloud_trusted_domains` points to.
|
||||
|
||||
|
|
@ -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
|
||||
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,
|
||||
but you are playing with fire at this point.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
|
||||
# set preferred application version
|
||||
nextcloud_version: 28-fpm-alpine
|
||||
nextcloud_version: 29-fpm-alpine
|
||||
# set preferred postgres version
|
||||
nextcloud_db_version: 12-alpine
|
||||
|
||||
|
|
@ -31,7 +30,6 @@ nextcloud_smtp_authtype: LOGIN
|
|||
# nextcloud_smtp_password: <smtp-password>
|
||||
nextcloud_smtp_from_address: noreply
|
||||
nextcloud_smtp_from_domain: "{{ server_domain }}"
|
||||
|
||||
# the following block is required *fully* for primary object storage
|
||||
# nextcloud_s3_host: s3.eu-central-1.wasabisys.com
|
||||
# nextcloud_s3_bucket: nextcloud
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ nextcloud_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update nextcloud upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update nextcloud upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs nextcloud as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ nextcloud_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
notify: "update nextcloud upstream"
|
||||
|
||||
|
|
@ -36,4 +36,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update nextcloud upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: nextcloud
|
||||
|
||||
stack_image: "nextcloud"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ ntfy_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update ntfy upstream"
|
||||
|
||||
|
|
@ -43,4 +43,3 @@
|
|||
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
|
||||
listen: "update ntfy upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs a self-hosted push notification service through docker-swarm.
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ ntfy_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
|
||||
- name: Move ntfy configuration file to target dir
|
||||
|
|
@ -35,4 +35,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update ntfy upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: ntfy
|
||||
|
||||
stack_image: "binwiederhier/ntfy"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
searx_version: latest
|
||||
|
||||
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
|
||||
subdomain_alias: search
|
||||
|
||||
# searx_authentication:
|
||||
# - username: mysearxusername
|
||||
# password: JDJhJDE0JFdjUnQ5WWllcU8wa01xS0JBS2dlMy5zMEhRTmxqTXdIZmdjcTN6ZGFwRjJlYUdoSHAwRUhL # mysearxpassword
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ searx_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update searx upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update searx upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs searx as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -21,4 +21,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update searx upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: searx
|
||||
|
||||
stack_image: "searxng/searxng"
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
A simple and fast bookmark manager.
|
||||
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
|
||||
(if not running with an existing data-store).
|
||||
Do this quickly after setup,
|
||||
*especially* if your instance is public-facing!
|
||||
_especially_ if your instance is public-facing!
|
||||
{: .alert .alert-warning}
|
||||
|
||||
## Defaults
|
||||
|
|
@ -37,4 +37,3 @@ subdomain_alias: links
|
|||
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` -
|
||||
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_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ shaarli_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update shaarli upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update shaarli upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs shaarli as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -21,4 +21,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update shaarli upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: shaarli
|
||||
|
||||
stack_image: "ghcr.io/shaarli/shaarli"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
traggo_version: latest
|
||||
|
||||
traggo_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ traggo_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update traggo upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update traggo upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs traggo as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -21,4 +21,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update traggo upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: traggo
|
||||
|
||||
stack_image: "traggo/server"
|
||||
|
|
|
|||
|
|
@ -39,4 +39,3 @@ stack_image: "wallabag/wallabag"
|
|||
```
|
||||
|
||||
The docker hub image to be use in provisioning.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
wallabag_version: latest
|
||||
|
||||
wallabag_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack_name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ wallabag_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update wallabag upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
|
||||
galaxy_info:
|
||||
author: Marty Oehme
|
||||
description: Installs wallabag as a docker stack service
|
||||
license: GPL-3.0-only
|
||||
min_ansible_version: 2.9
|
||||
min_ansible_version: "2.9"
|
||||
galaxy_tags: []
|
||||
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
stack_name: wallabag
|
||||
|
||||
stack_image: "wallabag/wallabag"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
---
|
||||
|
||||
whoami_version: latest
|
||||
|
||||
whoami_upstream_file_dir: "{{ docker_stack_files_dir }}/{{ stack.name }}"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
ansible.builtin.file:
|
||||
path: "{{ whoami_upstream_file_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
become: true
|
||||
listen: "update whoami upstream"
|
||||
|
||||
|
|
@ -50,4 +50,3 @@
|
|||
state: absent
|
||||
become: true
|
||||
listen: "update whoami upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
---
|
||||
|
||||
dependencies:
|
||||
- docker
|
||||
- docker-swarm
|
||||
- caddy
|
||||
- caddy_id
|
||||
|
|
|
|||
|
|
@ -22,4 +22,3 @@
|
|||
tags:
|
||||
- docker-swarm
|
||||
notify: "update whoami upstream"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
---
|
||||
|
||||
|
||||
stack:
|
||||
name: whoami
|
||||
compose: "{{ lookup('template', 'docker-stack.yml.j2') | from_yaml }}"
|
||||
|
|
|
|||
18
site.yml
18
site.yml
|
|
@ -49,12 +49,16 @@
|
|||
- name: Install traggo
|
||||
import_role:
|
||||
role: traggo
|
||||
tags: traggo
|
||||
tags:
|
||||
- traggo
|
||||
- never
|
||||
|
||||
- name: Install monica
|
||||
import_role:
|
||||
role: monica
|
||||
tags: monica
|
||||
tags:
|
||||
- monica
|
||||
- never
|
||||
|
||||
- name: Install nextcloud
|
||||
import_role:
|
||||
|
|
@ -79,4 +83,12 @@
|
|||
- name: Install ntfy
|
||||
import_role:
|
||||
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