Nextcloud-Infra
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
Description