Meine Webseite kommt zu dir von meinem RaspberryPi. Auf diesem läuft Nginx als Reverse-Proxy. Die Webseite habe ich mit Hugo erstellt. Das https-Zertifikat kommt von Letsencrypt über einen certbot-Container.
Hier - eher für mich selbst - die notwendigen Schritte bis zum golive der Websiete
- Raspberrypi einrichten
- Image auf die SD-Karte flashen (Ich nutze Ubuntu Server 64)
- optional: WLAN-Credentials in network-config eintragen
- Über ssh einloggen
- adduser jan
- useradd jan sudo
- /etc/hostname -> homepage-server
- /etc/hosts -> 127.0.1.1 homepage server
- reboot
- In Router feste IP zuweisen
- In Workstation
- /etc/host -> feste-IP homepage-server
- ssh-copy-id -i ~/.ssh/id_rsa.pub jan@homepage-server
- Docker, Docker-Compose, git installieren
- Cronjob anlegen um IP-Adresse beim Webseiten-Hoster zu aktualisieren
- Nginx und Certbot im Container starten. Schritte 2-4 übernimmt das folgende Playbook
---
- name: Reset homepage-server
hosts: homepage-server
become: true
tasks:
- name: Update and upgrade apt packages
apt:
upgrade: yes
update_cache: yes
cache_valid_time: 86400 #One day
- name: Check if reboot required
stat:
path: /var/run/reboot-required
register: reboot_required_file
- name: Reboot host and wait for it to restart
reboot:
msg: "Reboot initiated by Ansible"
connect_timeout: 5
reboot_timeout: 600
pre_reboot_delay: 0
post_reboot_delay: 30
test_command: whoami
when: reboot_required_file.stat.exists == true
- name: Check if docker Exists
stat: path=/etc/init.d/docker
register: docker_exists_file
- name: install docker
command: "{{ item }}"
with_items:
- curl -fsSL https://get.docker.com -o get-docker.sh
- sh get-docker.sh
when: docker_exists_file.stat.exists == false
- name: Install apache2-utils python3-pip
apt:
pkg:
- apache2-utils
- git
- python3-pip
- name: Install docker-compose with pip3
pip:
name: docker-compose
- name: Add jan to docker
user: name=jan
groups=docker
append=yes
- name: copy netcup dns files
ansible.builtin.copy:
force: yes
src: ./filesToCopy/dynamic-dns-netcup-api/
dest: /home/{{ lookup('env','USER') }}/dynamic-dns-netcup-api
owner: "{{ ansible_effective_user_id }}"
group: "{{ ansible_effective_group_id }}"
mode: '0700'
- name: estabish cronjob for netcup-dns @ every 10 minutes
ansible.builtin.cron:
name: "update janmeckelholt.de"
minute: "*/10"
job: "/usr/bin/php /home/{{ lookup('env','USER') }}/dynamic-dns-netcup-api/update.php"
- name: copy nginx-letsencrpyt files
ansible.builtin.copy:
force: yes
src: ./filesToCopy/nginx-certbot/
dest: /home/{{ lookup('env','USER') }}/
owner: "{{ ansible_effective_user_id }}"
group: "{{ ansible_effective_group_id }}"
mode: '0777'
- name: init-letsencrypt.sh
ansible.builtin.command: ./init-letsencrypt.sh
args:
chdir: /home/{{ lookup('env','USER') }}/
- name: remove and restart nginx and certbot
ansible.builtin.shell: "{{ item }}"
with_items:
- docker-compose down
- docker system prune -f
- docker-compose up -d
args:
chdir: /home/{{ lookup('env','USER') }}/