Files
surf/README.md

7.0 KiB

Nextcloud-Infra

Ansible Nextcloud

Verzameling Ansible playbooks voor geautomatiseerde deployment van Nextcloud en gerelateerde services op Debian/Ubuntu-servers.

Overzicht

Dit project biedt productie-ready Ansible playbooks voor het installeren en configureren van een complete Nextcloud-omgeving, inclusief:

Playbook Beschrijving
install_nextcloud.yml Volledige Nextcloud-installatie met Apache, MariaDB, PHP 8.3, Redis en Let's Encrypt
install_nextcloud_aio.yml Nextcloud All-In-One met Docker en Nginx reverse proxy
Install_HPB_Nextcloud.yml High Performance Backend met Signaling Server, Janus, NATS en TURN (Coturn) voor Nextcloud Talk
install_collabora.yml Collabora Online voor documenten bewerken in de browser
install_whiteboard.yml Whiteboard-server voor real-time samenwerking
install_context_chat.yml Context Chat Backend voor AI-gebaseerde chat
Install_recording.yml Nextcloud Talk Recording Server
install_xwiki.yml XWiki wiki-platform met MariaDB en Apache
install_docker.yml Standalone Docker-installatie
plugin-os.yml OS-configuratie voor verschillende cloud-omgevingen

Architectuur

┌─────────────────────────────────────────────────────────────────┐
│                        Nextcloud Server                          │
├─────────────────────────────────────────────────────────────────┤
│  Apache2  │  PHP 8.3  │  MariaDB  │  Redis  │  Let's Encrypt    │
└─────────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
        ▼                     ▼                     ▼
┌───────────────┐   ┌───────────────┐   ┌───────────────┐
│   Collabora   │   │  HPB Stack    │   │   Whiteboard  │
│   (Docker)    │   │ Janus/NATS/   │   │   (Node.js)   │
│               │   │ Signaling     │   │               │
└───────────────┘   └───────────────┘   └───────────────┘

Vereisten

  • Server: Debian 11/12 of Ubuntu 20.04+ (aanbevolen: Ubuntu 22.04 LTS)
  • Lokaal: Python 3 en Ansible geïnstalleerd
  • Toegang: SSH met sudo-rechten op de doelserver
  • DNS: A-record(s) geconfigureerd naar server IP

Quickstart

1. Clone de repository

git clone https://gitea.rikdekker.nl/rik/surf.git
cd surf

2. Maak een hosts-bestand

Maak een hosts bestand met je serverconfiguratie:

[nextcloud]
jouw-server.nl

[nextcloud:vars]
ansible_user=root
domain=cloud.jouwdomein.nl
admin_user=admin
admin_pass=VeiligWachtwoord123!
db_name=nextcloud
db_user=nextcloud
db_pass=DatabaseWachtwoord123!
email=admin@jouwdomein.nl

3. Voer een playbook uit

# Basis Nextcloud-installatie
ansible-playbook -i hosts install_nextcloud.yml

# Of Nextcloud All-In-One (Docker-gebaseerd)
ansible-playbook -i hosts install_nextcloud_aio.yml

Playbook Details

Nextcloud Basis (install_nextcloud.yml)

Installeert een complete Nextcloud-stack:

  • Webserver: Apache2 met mod_rewrite en mod_headers
  • Database: MariaDB met geoptimaliseerde instellingen
  • PHP: PHP 8.3 met alle vereiste extensies
  • Caching: Redis + APCu voor optimale prestaties
  • SSL: Automatische Let's Encrypt certificaten
  • Onderhoud: Cronjobs voor achtergrondtaken en database-onderhoud

High Performance Backend (Install_HPB_Nextcloud.yml)

Voor Nextcloud Talk met video/audio-conferencing:

  • Go 1.23.0: Voor de signaling server
  • NATS: Message broker voor real-time communicatie
  • Janus: WebRTC media server
  • Coturn: TURN-server voor NAT traversal
  • Signaling Server: Nextcloud Talk backend (v2.0.3)

Collabora Online (install_collabora.yml)

Browser-gebaseerd kantoorpakket:

  • Docker-container met Collabora CODE
  • Nginx reverse proxy
  • Automatische SSL-certificaten

Recording Server (Install_recording.yml)

Voor het opnemen van Nextcloud Talk-gesprekken:

  • Firefox + Geckodriver voor browser-automatisering
  • FFmpeg voor video/audio-encoding (1920x1080)
  • Python virtual environment

Configuratie Variabelen

Variabele Beschrijving Voorbeeld
domain Primair domein voor Nextcloud cloud.example.nl
admin_user Admin gebruikersnaam admin
admin_pass Admin wachtwoord SecurePass123!
db_name Database naam nextcloud
db_user Database gebruiker nextcloud
db_pass Database wachtwoord DbPass123!
email E-mail voor Let's Encrypt admin@example.nl
collabora_domain Domein voor Collabora office.example.nl
signaling_domain Domein voor HPB signaling.example.nl
turn_secret TURN server secret (wordt gegenereerd)

Beveiliging

De playbooks implementeren beveiligingsmaatregelen:

  • HTTPS met HSTS-headers
  • Veilige PHP-configuratie
  • Firewall-vriendelijke opzet
  • Automatisch gegenereerde secrets en API-sleutels
  • Database met beperkte rechten

Onderhoud

Na installatie worden automatisch cronjobs ingesteld voor:

  • Nextcloud achtergrondtaken (elke 5 minuten)
  • Database-onderhoud
  • Logrotatie
  • Mimetype-reparatie

Bestandsstructuur

surf/
├── install_nextcloud.yml        # Basis Nextcloud
├── install_nextcloud_aio.yml    # Nextcloud AIO (Docker)
├── Install_HPB_Nextcloud.yml    # High Performance Backend
├── install_collabora.yml        # Collabora Online
├── install_whiteboard.yml       # Whiteboard Server
├── install_context_chat.yml     # AI Context Chat
├── Install_recording.yml        # Talk Recording
├── install_xwiki.yml            # XWiki Platform
├── install_docker.yml           # Docker installatie
├── plugin-os.yml                # OS configuratie
├── NextcloudAIO.values.yaml     # AIO configuratie
├── NextcloudAIO_docker.yml      # AIO Docker Compose
└── README.md

Bijdragen

Bijdragen zijn welkom! Open een issue of pull request op Gitea.


Auteur: Rik Dekker Repository: gitea.rikdekker.nl/rik/surf