Create install_nextcloud_aio
This commit is contained in:
174
install_nextcloud_aio
Normal file
174
install_nextcloud_aio
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
- name: Installeer Nextcloud AIO achter reverse proxy met Certbot
|
||||||
|
hosts: nextcloud
|
||||||
|
become: true
|
||||||
|
|
||||||
|
vars:
|
||||||
|
docker_compose_path: /opt/nextcloud-aio
|
||||||
|
webroot_path: /var/www/letsencrypt
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Installeer vereisten (zonder docker*)
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- curl
|
||||||
|
- apt-transport-https
|
||||||
|
- ca-certificates
|
||||||
|
- software-properties-common
|
||||||
|
- nginx
|
||||||
|
- certbot
|
||||||
|
- python3-certbot-nginx
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Installeer Docker via officieel script
|
||||||
|
shell: curl -fsSL https://get.docker.com | sh
|
||||||
|
args:
|
||||||
|
creates: /usr/bin/docker
|
||||||
|
|
||||||
|
- name: Voeg gebruiker toe aan docker groep
|
||||||
|
user:
|
||||||
|
name: "{{ user }}"
|
||||||
|
groups: docker
|
||||||
|
append: yes
|
||||||
|
|
||||||
|
- name: Maak docker-compose map aan
|
||||||
|
file:
|
||||||
|
path: "{{ docker_compose_path }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ user }}"
|
||||||
|
group: docker
|
||||||
|
|
||||||
|
- name: Maak webroot map voor Certbot
|
||||||
|
file:
|
||||||
|
path: "{{ webroot_path }}"
|
||||||
|
state: directory
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Genereer tijdelijke NGINX-config voor Certbot
|
||||||
|
copy:
|
||||||
|
dest: /etc/nginx/sites-available/nextcloud-aio
|
||||||
|
content: |
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name {{ domain }};
|
||||||
|
|
||||||
|
location /.well-known/acme-challenge/ {
|
||||||
|
root {{ webroot_path }};
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
return 503;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Activeer tijdelijke site
|
||||||
|
file:
|
||||||
|
src: /etc/nginx/sites-available/nextcloud-aio
|
||||||
|
dest: /etc/nginx/sites-enabled/nextcloud-aio
|
||||||
|
state: link
|
||||||
|
force: yes
|
||||||
|
|
||||||
|
- name: Verwijder default site
|
||||||
|
file:
|
||||||
|
path: /etc/nginx/sites-enabled/default
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Valideer NGINX-config
|
||||||
|
command: nginx -t
|
||||||
|
register: nginx_check
|
||||||
|
failed_when: nginx_check.rc != 0
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Herlaad NGINX
|
||||||
|
service:
|
||||||
|
name: nginx
|
||||||
|
state: reloaded
|
||||||
|
when: nginx_check.rc == 0
|
||||||
|
|
||||||
|
- name: Vraag certificaat aan via Certbot webroot
|
||||||
|
shell: >
|
||||||
|
certbot certonly --webroot
|
||||||
|
-w {{ webroot_path }}
|
||||||
|
--non-interactive --agree-tos
|
||||||
|
--email {{ email }}
|
||||||
|
-d {{ domain }}
|
||||||
|
args:
|
||||||
|
creates: "/etc/letsencrypt/live/{{ domain }}/fullchain.pem"
|
||||||
|
|
||||||
|
- name: Genereer definitieve NGINX-config met SSL
|
||||||
|
copy:
|
||||||
|
dest: /etc/nginx/sites-available/nextcloud-aio
|
||||||
|
content: |
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name {{ domain }};
|
||||||
|
location / {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name {{ domain }};
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/{{ domain }}/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/{{ domain }}/privkey.pem;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:11000;
|
||||||
|
proxy_ssl_verify off;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /.well-known/acme-challenge/ {
|
||||||
|
root {{ webroot_path }};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Herlaad NGINX met definitieve config
|
||||||
|
service:
|
||||||
|
name: nginx
|
||||||
|
state: reloaded
|
||||||
|
|
||||||
|
- name: Start Nextcloud AIO container
|
||||||
|
copy:
|
||||||
|
dest: "{{ docker_compose_path }}/docker-compose.yml"
|
||||||
|
content: |
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
nextcloud-aio-mastercontainer:
|
||||||
|
image: nextcloud/all-in-one:latest
|
||||||
|
container_name: nextcloud-aio-mastercontainer
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
volumes:
|
||||||
|
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
environment:
|
||||||
|
NEXTCLOUD_URL: "https://{{ domain }}"
|
||||||
|
APACHE_PORT: "11000"
|
||||||
|
APACHE_IP_BINDING: "127.0.0.1"
|
||||||
|
SKIP_DOMAIN_VALIDATION: "true"
|
||||||
|
volumes:
|
||||||
|
nextcloud_aio_mastercontainer:
|
||||||
|
name: nextcloud_aio_mastercontainer
|
||||||
|
|
||||||
|
- name: Start container via docker-compose
|
||||||
|
shell: docker compose up -d
|
||||||
|
args:
|
||||||
|
chdir: "{{ docker_compose_path }}"
|
||||||
|
|
||||||
|
- name: Cronjob voor automatische SSL-vernieuwing
|
||||||
|
cron:
|
||||||
|
name: "Certbot renew"
|
||||||
|
user: root
|
||||||
|
job: "certbot renew --quiet && systemctl reload nginx"
|
||||||
|
minute: "0"
|
||||||
|
hour: "3"
|
||||||
Reference in New Issue
Block a user